两个日期之间的JPA差异小于间隔

时间:2019-05-09 11:59:08

标签: postgresql jpa

我想进行以下查询,该查询在Postgres中成功运行,在JPA中运行。我想列出所有在开业后的前3个小时内至少售出1件商品的商店:

select * from shop s join item i on i.shopId = s.id where
i.sold_date - s.shop_open_date  < interval '3 hours'
String sql = SELECT shop FROM ShopEntity shop JOIN shop.item where ((item.soldDate - shop.openDate) > interval '3 hours')
TypedQuery<ShopEntity> typedQuery = em.createQuery(sql,ShopEntity.class);
typedQuery.getResultList();

由于:java.lang.IllegalArgumentException:在EntityManager中创建查询时发生了异常: 引起原因:org.eclipse.persistence.exceptions.JPQLException: 异常描述:语法错误解析[SELECT shop FROM ShopEntity shop JOIN shop.item WHERE((item.soldDate-shop.openDate)>间隔'3小时') [334,530]该表达式不是有效的条件表达式。 [530,562]查询包含格式错误的结尾。     在org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)     在org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334)     在org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)     在org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)     在org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)     在org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)     在org.eclipse.persistence.internal.jpa.EJBQueryImpl。(EJBQueryImpl.java:102)     在org.eclipse.persistence.internal.jpa.EJBQueryImpl。(EJBQueryImpl.java:86)     在org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1614)     ...省略了136个通用框架 ]]

0 个答案:

没有答案