Chcę dodać LEFT JOIN na stole TASK gdy zachodzi następujący warunek: LEFT JOIN FETCH PROMPT na p (t.id = p.task.id i p.applicationName w ('XXX'))Hibernate HQL: jak korzystać z kompleksowego LEFT JOIN sprowadzić
Oto moje zapytania 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
otrzymuję następujący wyjątek, prawdopodobnie ze względu na "on" słowo kluczowe:
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)
Jakieś pomysły?
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;
}
Jak mogę użyć LEFT JOIN sprowadzić używając mojego stanu p.applicationName w ('XXX')?
Opublikowana przez ciebie struktura klas (zakładam, że są odpowiednie adnotacje na wszystkich tych właściwościach), nie łączy "Monitu" z żadną inną klasą. You SQL dołącza 'Prompt' i' Task' przez 'id_zadania', ale nie ma powyższych pasujących właściwości. Czy 'Task' jest właściwością w' Prompt'? Lub odwrotnie? Możesz wyjaśnić? – ChssPly76