【问题标题】:What should be the data type of deleted fields?删除字段的数据类型应该是什么?
【发布时间】:2012-02-01 06:40:22
【问题描述】:
在设计数据库时,我使用了一个已删除的字段名称并将其用作布尔值。一切似乎都很好。
我使用的是休眠 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
谁能告诉我如何解决这个问题?
【问题讨论】:
标签:
java
hibernate
spring
【解决方案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;