【发布时间】:2015-04-02 21:59:42
【问题描述】:
这里有两个查询应该完全相同,只是一个被标记为原生,另一个不是。第一个工作正常,但第二个失败 incompatible data type in conversion
@Transactional(readOnly = true)
@Query(value = "select startDate from TaskMetrics where startDate between :startDate and :endDate")
List<DateTime> findStartDateByStartDateBetween(@Param("startDate") DateTime startDate,
@Param("endDate") DateTime endDate);
这会生成查询:
select taskmetric0_.startDate as col_0_0_ from TaskMetrics taskmetric0_ where taskmetric0_.startDate between ? and ?
有绑定
binding parameter [1] as [TIMESTAMP] - [2015-02-02 10:57:14.279]
binding parameter [2] as [TIMESTAMP] - [2015-02-04 10:57:14.281]
-
@Transactional(readOnly = true)
@Query(nativeQuery = true, value = "select startDate from TaskMetrics where startDate between :startDate and :endDate")
List<DateTime> findStartDateBetween(@Param("startDate") DateTime startDate,
@Param("endDate") DateTime endDate);
这会生成查询:
select startDate from TaskMetrics where startDate between ? and ?
使用一个绑定,这似乎也有点奇怪(尤其是为什么 #2?):
binding parameter [2] as [VARBINARY] - [2015-02-04T10:57:14.315-05:00]
我使用 Hibernate 4.3.8.Final 作为我的 JPA 2.1 提供程序,使用 Jadira Usertype 3.1.0.CR10 来支持 JodaTime。
是我做错了什么还是这是某个地方的错误?
【问题讨论】:
标签: java jpa spring-data jodatime spring-data-jpa