我想进行以下查询,该查询在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个通用框架 ]]