如果实体的属性定义为
private String noWstManagedFlg;
并且数据库约束设置为强制使用"Y"或"N"。 是否有内置的 Y N 到布尔转换器可以与 h:selectBooleanCheckbox 一起使用? 或者我是否需要在我的实体上添加自己的转换器和/或属性以返回布尔值?
<h:selectBooleanCheckbox value="#{entity.noWstManagedFlg}" />
Seam中没有这样的转换器,但是如果你的JPA实现是Hibernate,你可以用'yes_no
'类型映射该属性,并将其作为实体中的布尔值。
@Type(type= "yes_no")
private boolean noWstManagedFlg;
根据经验和我所读到的内容 h:selectBoolean复选框不支持转换器。我写了一个转换器,可以将"Y"/"N"转换为真/假。"getAsString"方法按预期调用,但从不调用"getAsObject"方法。 @Stefano是正确的,最好的方法是在实体属性上使用休眠"yes_no"或"true_false"类型。
我在使用"@Type(type = "yes_no")"时遇到了问题。首先,休眠未能将"Y"/"N"字符串正确转换为真/假值。其次,尝试更新实体会导致程序挂起。使用以下映射为我解决了这些问题,现在一切都按预期工作。
@Type(type = "org.hibernate.type.YesNoType")
private boolean noWstManagedFlg;