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