JPA разница между 2 датами меньше интервала - PullRequest
0 голосов
/ 09 мая 2019

Я хотел бы сделать приведенный ниже запрос, который успешно выполняется в Postgres, в JPA. Я хотел бы перечислить все магазины, которые продали хотя бы 1 товар за первые 3 часа после открытия:

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: Описание исключения: синтаксическая ошибка синтаксического анализа [ВЫБРАТЬ магазин ИЗ ShopEntity shop СОЕДИНИТЬ shop.item ГДЕ ((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 общих кадров опущено ]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...