【发布时间】:2013-10-08 07:40:39
【问题描述】:
我有一个具有 DateTime 属性的实体在休眠状态下持久化
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@Column(name = "EFF_DT")
protected DateTime effDt;
这一切都很好,适用于常规 spring-data-jpa 生成的查询。
我正在尝试添加自定义本机查询
@Query(value = "SELECT COUNT(*) FROM wsa_circuit_state_history ch WHERE ch.eff_dt between ?1 and ?2", nativeQuery = true)
Integer countEffDateBetween(DateTime start, DateTime end);
我得到的错误是尝试调用它时
java.sql.SQLException: ORA-00932: inconsistent datatypes: expected DATE got BINARY
这是我在将自定义类型映射添加到我的实体之前使用常规 spring-data 查找器时遇到的相同错误
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
如何让 spring-data-jpa/hibernate 使用自定义类型映射来将参数映射到本机查询?
【问题讨论】:
-
你找到答案了吗?
-
@WojciechGórski 不,我没有找到解决办法。最后我设法在 JPA 中重写了查询,然后休眠 @Type 注释开始处理类型转换
@Query("select count(ch.circuitId) from nz.co.vodafone.wcim.model.CircuitStateLog ch where ch.effDt between ?1 and ?2 and ch.state=?3")
标签: hibernate jpa jodatime spring-data-jpa