我想添加一個左連接上TASK表時出現以下情況: LEFT JOIN FETCH上 PROMPT P(t.id = p.task.id 和p.applicationName在( 'XXX'))Hibernate的HQL:如何使用複雜的LEFT JOIN取
這裏是我的HQL查詢:
select
distinct t
from
TASK t
LEFT JOIN FETCH
SERVER ser
on t.id=ser.task_id
LEFT JOIN FETCH
APPLICATION app
on ser.id=app.server_id
LEFT JOIN FETCH
PROMPT p on (t.id = p.task.id and p.applicationName in ('XXX'))
where
t.id=ser.task.id
and ser.id=app.server
and app.name in ('XXX')
order by t.id
我得到下面的異常,可能是由於 「對」 的文章:
java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
at org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:771)
任何想法?
class Task {
private String taskId;
private Set<ServerDetails> servers;
}
class ServerDetails {
private String id;
private Set<ApplicationDetails> applications;
}
class ApplicationDetails {
private String id;
}
Class Prompt {
private String applicationName;
}
如何使用LEFT JOIN 使用我的病情p.applicationName在( 'XXX')取?
您發佈的類結構(我假設所有這些屬性都有適當的註釋)不會將'Prompt'鏈接到任何其他類。你的SQL通過'task_id'連接'Prompt'和'Task',但是上面沒有匹配的屬性。 'Task'是'Prompt'屬性嗎?或相反亦然?你能澄清嗎? – ChssPly76 2009-11-08 17:46:34