Seb*_*mba 6 hibernate join illegalargumentexception
在升级到更新的hibernate版本之后(猜测它是从JBoss 4.2.2到JBoss 6的转换),一些查询失败并显示以下消息:
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName= (...)
使用如下查询时总是如此:
SELECT entityA FROM EntityA entityA
JOIN FETCH entityA.entityB
LEFT JOIN FETCH entityA.entityB.someField
WHERE entityA.entityB.anotherField LIKE :someParameter
Run Code Online (Sandbox Code Playgroud)
该问题的解决方案是给"entityA.entityB"一个别名,然后在该WHERE子句中使用该别名.但在某些查询中,LEFT JOIN FETCH并未明确给出,但该WHERE子句仍使用引用实体的属性.它会失败吗?有什么变化,以便在切换到新的JBoss版本后突然失败?
以下问题与此问题有关,包括解决方案,但不解释问题.
查询应该是
SELECT entityA FROM EntityA entityA
JOIN FETCH entityA.entityB entityB
LEFT JOIN FETCH entityB.someField
WHERE entityB.anotherField LIKE :someParameter
Run Code Online (Sandbox Code Playgroud)
即,您应该为每个连接实体分配一个别名,并使用此别名进行后续连接或限制。
| 归档时间: |
|
| 查看次数: |
4239 次 |
| 最近记录: |