Ich habe folgende Entität
%Vor%Folgendes ist meine Aktion
%Vor%Ich möchte eine Liste von Regeln mit bestimmten Aktionen abrufen Ich versuche das
%Vor%Aber bekommen org.hibernate.MappingException: collection war keine association: exception ..
BEARBEITEN Nach der Anleitung von jbrookover habe ich versucht, eine Wrapper-Klasse für Action namens RuleAction zu erstellen und konnte die oneToMany-Beziehung wiederherstellen. Außerdem habe ich die Abfrage wie folgt geändert:
%Vor%Aber das gibt mir alle Regeln zurück, die entweder EMAIL oder POSTAL haben, aber was ich will, ist alle Regeln, die E-MAIL und POST beide haben Bitte hilf mir die Abfrage zu modifizieren.
Entschuldigung, was Sie gerade versuchen, wird in Hibernate nicht unterstützt. Siehe diese FAQ:
Ich war auch ziemlich unzufrieden damit. Wie Sie jedoch sehen können, haben sie versucht, das Problem zu beheben. Sie konnten es nicht mehr tun und haben es der Community übertragen, damit umzugehen. Sie haben einige Optionen:Sie können so etwas tun:
%Vor% Aktualisieren Sie dann Ihre Verknüpfungen und fragen Sie entsprechend, so dass Rule
eine Set<ActionWrapper>
hat. Es gibt andere Problemumgehungen, aber Sie können Criteria
und @ElementCollection
im Wesentlichen nicht zusammen verwenden.
Aktualisieren
Um die Abfrage weiter einzuschränken, um sicherzustellen, dass Sie Regeln erhalten, die BOTH-Aktionen erfüllen, müssen Sie die Unterabfrage ausführen und eine Konjunktion - 'und' - der übereinstimmenden Werte ausführen. So etwas sollte funktionieren:
%Vor%Am Ende können Sie doppelte Ergebnisse finden. Dies ist üblich und kann eliminiert werden, indem Sie Folgendes hinzufügen:
%Vor%Ich kann nicht für die Effizienz dieses Codes sprechen - HQL kann auf lange Sicht besser sein. Ich habe jedoch in anderen Projekten etwas Ähnliches gemacht und habe keine Probleme festgestellt.
Eine andere Lösung, ohne Ihre enums zu verpacken und ResultTransformers zu verwenden, ist dies:
%Vor%Abfrage:
%Vor%Das hat bei Hibernate 4.1.6.Final für mich funktioniert. Ich fand es hier .
Tags und Links hibernate hibernate-criteria