2016-08-16 6 views
3

Я использую Spring Data, и я использую родной запрос:SpringData неправильные результаты при использовании родного запроса и дата свойство

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

Например, это возвращает 3 результаты.

Native запрос непосредственно в сервере MySQL:

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

возвращает 0 результатов.

Даты равны для обоих.

Результаты отличаются от использования чистого запроса sql, выглядит time свойство не используется или неправильно. Что не так ?

Edit:

@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

Ithink вы должны использовать 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); 
} 
+0

Я думаю, что это опечатка в документации, все остальные индексы начинается с 1 в примерах. Также у меня была ошибка, если я помню, связанный с этим. Также мой третий пример возвращает правильный результат с аргументом? 1. Я подтвержу это вечером. – kxyz

+0

Как я уже говорил, в документации есть опечатка, она насчитывает от 1, при этом исключение составляет 0 исключений – kxyz

Смежные вопросы