至于遗产原因,我们在oracle db中将日期存储为NUMBER(例如1101980是1980年10月1日)。
我们正在使用jboss AS 7.1.2以及hibernate作为持久性提供程序。
为了能够在我的实体中使用java.util.Date,我创建了一个hibernate自定义类型,用于在java.util.Date和数据库中的NUMBER之间进行转换。实体的属性相应地用hibernate的@Type
注释。
到目前为止,这已经非常有效。但是现在我们开始使用JPA 2的标准api,对于这些查询,自定义类型不会被应用。
E.g。我将出生日期设置为java.util.date:
Predicate birthday = cb.equal( person.get( Person_.dateOfBirth ), date );
但是当我执行查询时,我得到了
ORA-00932:不一致的数据类型:预期的NUMBER得到了TIMESTAMP
这表示未应用自定义类型。有办法解决这个问题吗?也许通过使用任何hibernate的特定标准apis?我真的不希望Long
作为我的实体的日期