在数据库设计中,我使用了一个字段名称删除并将其用作布尔值。一切似乎都很好。
我正在使用hibernate 3.6.9。所以我配置了 applicationContext
prop key =“hibernate.query.substitutions”> true = 1 false = 0
在我的sessionFactory bean中。因此,当我保存我的对象时,它将我的布尔值转换为1/0。 所以问题是当我从数据库中检索对象时,我得到了
java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Boolean
你们任何人都可以告诉我们如何解决这个问题吗?
答案 0 :(得分:1)
我猜测hibernate.query.substitutions
仅适用于查询,但不适用于实体。
我要尝试的是实现一个将布尔值映射到1或0的自定义用户类型。而不是使用该自定义用户类型来注释我的实体的布尔字段。
@org.hibernate.annotations.Typ(type="com.example.Boolean01Type")
private boolean deletes;
有关如何实现自定义类型的示例,请查看此blog。 (我不是100%肯定,但我记得在hibernate中有两个自定义类型的概念,一个比另一个更强大)
但是一定要看标准的自定义类型“yes_no”,这非常接近你需要编写的类型。
@org.hibernate.annotations.Type(type="yes_no")
boolean myBoolean;