Ich möchte beitreten auf TASK Tabelle links hinzuzufügen, wenn die folgende Bedingung auftritt: LEFT JOIN FETCH PROMPT p auf (t.id = p.task.id und p.applicationName in ('XXX'))Hibernate HQL: wie eine komplexe links verwenden join holen
Hier ist meine HQL-Abfrage:
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
ich die folgende Ausnahme erhalten, wahrscheinlich wegen "auf" Stichwort:
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)
Irgendwelche Ideen?
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;
}
Wie kann ich links JOIN holen in meinem Zustand p.applicationName mit ('XXX')?
Die von Ihnen gepostete Klassenstruktur (ich gehe davon aus, dass für alle diese Eigenschaften entsprechende Anmerkungen vorhanden sind) verknüpft Prompt nicht mit anderen Klassen. Sie SQL verbindet 'Prompt' und' Task' über 'task_id', aber es gibt keine passenden Eigenschaften oben. Ist "Aufgabe" eine Eigenschaft auf "Eingabeaufforderung"? Oder umgekehrt? Könntest Du das erläutern? – ChssPly76