Я использую пользовательские запросы в JPA, это не позволяет мне использовать ключевое слово interval
. Он дает правильный результат, если я не использую - interval '7 days'
в запросе.Пользовательские запросы в JPA в Spring MVC
Исключение говорит: Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: interval near line 1, column 214
@Query("select d from DomainName d , DomainNameReminder dr, Reseller r"+
" where d.reminder.id = dr.id "+
" and dr.secondNotification=current_date - interval '7 days' "+
" and r.checkParty=true "+
" and r.id = d.invoicingParty.id ")
public List<Object> findDomainsBySecondNotificationDate();
Этот запрос в основном приносит все записи, которые имеющие второй срок уведомления за 7 дней до сегодняшнего дня.
Мой интерфейс объявлен как
public interface DomainNameRepository extends JpaRepository<DomainName, Long>,
QueryDslPredicateExecutor<DomainName> {
Мой запрос дает правильный вывод в pgadmin postgresql client
, я очень удивлен, почему я не могу использовать ключевые слова здесь.
Это решение может помочь вам в вопросе. http://stackoverflow.com/questions/1945615/how-to-map-the-type-interval-in-hibernate#answer-6139581 – javasenior
JPQL и SQL - это два разных языка. Попытка использовать запрос JPQL в клиенте postgresql и наоборот не имеет большого смысла. –
Вы пытались добавить 'nativeQuery = true' в аннотацию @Query? – reto