JPQL - 组合IN表达式中的多个字段

时间:2011-12-17 09:04:30

标签: jpa eclipselink jpql

我想知道是否有办法编写类似于下面的

的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 :(得分:0)

JPA规范(1和2都没有)涵盖此类查询。但是,Hibernate确实支持它。

答案 1 :(得分:0)

您可以为此使用本机SQL查询,也可以使用连接而不是子选择。

EclipseLink在Expression查询中支持此功能,但目前不在JPQL中。 (虽然并非所有数据库都支持此功能)