JPQL - объединить несколько полей в выражении IN - PullRequest
0 голосов
/ 17 декабря 2011

Мне интересно, есть ли способ написать оператор JPQL, аналогичный приведенному ниже

select o from entity1 o where (o.field1, o.field2) IN (select value1, value2 from ...)

Подобный SQL-запрос работает в Oracle 10g. Однако в eclipselink я получил эту ошибку:

syntax error at [,].
Internal Exception: MismatchedTokenException(81!=84)
at org.eclipse.persistence.exceptions.JPQLException.syntaxErrorAt(JPQLException.java:362)
at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.handleRecognitionException(JPQLParser.java:301)
at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.addError(JPQLParser.java:242)
at org.eclipse.persistence.internal.jpa.parsing.jpql.JPQLParser.reportError(JPQLParser.java:359)

Любая помощь приветствуется.

Спасибо, KL

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Вы можете использовать для этого собственный SQL-запрос или, возможно, использовать объединение вместо подвыбора.

EclipseLink поддерживает это в запросах Expression, но не в настоящее время в JPQL. (хотя не все базы данных поддерживают это)

0 голосов
/ 17 декабря 2011

Этот тип запроса не охватывается спецификацией JPA (ни 1, ни 2). Тем не менее, Hibernate поддерживает это.

...