关于Java:Spring MVC中JPA中的自定义查询

Custom queries in JPA in Spring MVC

我在JPA中使用自定义查询,但不允许我使用interval关键字。 如果我在查询中不使用- interval '7 days',它将给出正确的输出。

异常说:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: interval near line 1, column 214

1
2
3
4
5
6
       @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天具有第二个通知日期的所有记录。

我的接口声明为

1
2
public interface DomainNameRepository extends JpaRepository<DomainName, Long>,
QueryDslPredicateExecutor<DomainName> {

我的查询在pgadmin postgresql client中给出了正确的输出,我很惊讶为什么不能在此处使用关键字。


这解决了我的问题。

我使用了nativeQuery=true并使用了我在postgresql中执行的查询。 也想与他人分享。

1
2
3
4
5
6
@Query( nativeQuery = true, value ="select domain_name.* from domain_name, domain_name_reminder, reseller" +
       "where domain_name.reminder_id = domain_name_reminder.id" +
       "and domain_name_reminder.second_notification=current_date - interval ':totalDays days'" +
       "and reseller.myCheck=true" +
       "and reseller.id = domain_name.invoicing_party_id")
public List<DomainName> findDomainsBySecondNotificationDate(@Param("totalDays")Integer totalDays);