我正在使用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);
返回正确的结果。
但是仍然存在问题,是什么导致这种情况?
答案 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);
}