使用本机查询和日期属性

时间:2016-08-16 09:46:57

标签: mysql spring hibernate spring-data

我正在使用Spring Data并使用本机查询:

@Query(value = "SELECT DISTINCT(t.foo_id) FROM t_bar t where time > ?1", nativeQuery = true)
List<String> getFoo(DateTime after);

例如,这会返回3个结果。

直接在mysql服务器中进行本机查询:

SELECT DISTINCT(t.foo_id) FROM t_bar t where time > '2016-08-16T11:44:00.002+02:00'

返回0个结果。

两者的日期相等。

结果与使用纯SQL查询不同,查找time属性未使用或错误。怎么了?

修改

@Query(value = "SELECT DISTINCT(t.foo_id) FROM t_bar t where time > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL ?1 HOUR)", nativeQuery = true)
List<String> getFoo(int lastHours);

返回正确的结果。

但是仍然存在问题,是什么导致这种情况?

1 个答案:

答案 0 :(得分:0)

我认为你应该使用?0而不是?1

@Query(value = "SELECT DISTINCT(t.foo_id) FROM t_bar t where time > ?0", nativeQuery = true)
List<String> getFoo(DateTime after);

这是http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html的一个例子:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?0", nativeQuery = true)
  User findByEmailAddress(String emailAddress);
}