我遇到了一些奇怪的情况,我似乎无法弄清楚。
我有一组带有 Jodatime 日期时间字段的 Hibernate 注释实体类。当 hibernate 生成我的架构时,一些日期时间字段被正确设置为 MySQL 中的 DateTime 列,而其他字段则被创建为微小的 blob。我正在使用 Usertype 库为我做我的类型映射,但我已经用 joda-time-hibernate 库尝试过,我得到了相同的结果。奇怪的是,这些列在我的代码中的声明方式完全相同,例如
这个生成一个小 Blob 而不是日期时间:
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime respondedTime;
但是不同类中的这个正确生成日期时间列:
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime date;
所以我想知道是否有人遇到过类似的事情,或者他们是否知道如何确保 Hibernate 为我的日期时间字段生成 DateTime 列。
如果它有什么不同,我正在使用用户类型 1.8 版和 jodatime 1.6 版与 hibernate 3.6.0.Final
最佳答案
当 UserType
实现认为它无法处理该类型时,如果 Hibernate 找不到列的用户类型或,就会发生这种行为。
所以要么参数有类型,要么 UserType
有错误,或者 DateTime
在这两个地方是不同的类型。
为避免拼写错误,我建议使用 @TypeDefs
为用户类型创建更具可读性的名称。
参见 this blog post .
关于java - Hibernate 在我的数据库中随机生成 joda 时间列作为微小的 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678721/