Ich möchte einen linken Join in der TASK-Tabelle hinzufügen, wenn die folgende Bedingung eintritt: LINKE JOIN FETCH PROMPT p on (t.id = p.task.id und p.applicationName in ('XXX') )
Hier ist meine hql-Abfrage:
%Vor%Ich erhalte die folgende Ausnahme wahrscheinlich aufgrund des Schlüsselwortes "on":
%Vor%Irgendwelche Ideen?
%Vor%Wie kann ich linksbündig fetch mit der Bedingung p.applicationName in ('XXX') verwenden?
Hier gibt es mehrere Probleme:
ON
clause nicht mehrere verknüpfte Bedingungen in Klammern. NoSuchMethodError
ist nicht etwas, was Hibernate werfen würde :-) Sie haben wahrscheinlich eine ältere Version von antlr.jar
irgendwo in Ihrem Klassenpfad und sie wird anstelle des von Hibernate erwarteten abgerufen. Finde es und entferne es. Ohne Ihre Abbildungen zu sehen, ist das Folgende wahrscheinlich ungenau, aber ich werde einen Versuch machen, die passendere HQL zu schreiben:
%Vor% Beachten Sie, dass prompt
nicht abgerufen wird, weil Sie join fetch
nicht zusammen mit with
condition verwenden können. Sie können es durch inner join fetch
und where
ersetzen, wenn die Zuordnung erforderlich ist.
Wenn Sie immer noch Probleme haben, nachdem das Klassenpfadproblem gelöst wurde, können Sie Ihre Zuordnungen posten, wenn Sie Hilfe bei der tatsächlichen HQL benötigen.