Hibernate で JPA を使用していますが、今日、奇妙な動作が見られました。
次のクエリは正常に機能します。
select x.fichaCaracterizacao.id
from FichaParecer x
where x.departamento in :departamentos
ただし、内部クエリで使用すると、次のように例外がスローされます。
select p.fichaCaracterizacao.id
from FichaParecer p
where 1=1 and
p.id in (select x.fichaCaracterizacao.id
from FichaParecer x
where x.departamento in :departamentos)
次の例外がスローされます。
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: , near line 1, column 244 [select p.fichaCaracterizacao.id from br.ufscar.siga.cadastrosgerais.entity.FichaParecer p where 1=1 and p.id in (select x.fichaCaracterizacao.id from br.ufscar.siga.cadastrosgerais.entity.FichaParecer x where x.departamento in :departamentos0_, :departamentos1_, :departamentos2_)]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1348) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:261) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
これは、「departamentos」コレクションに複数のアイテムがある場合にのみ発生します。
Hibernate はこれをサポートしていますか? それとも私は何か間違ったことをしていますか?
編集:Hibernate 4.0.1.Finalを使用しています