Ich habe diesen einfachen Hibernate-Code.
%Vor%Das Problem ist die Parameter und irgendwie Störung oder gemischt oder in einer falschen Position jedes Problem tritt auf, wenn ich createAlias beide mit mindestens einem Kriterium wie folgt erstellen (siehe Update unten)
createAlias mit einigen Kriterien
%Vor%Der erzeugte SQL scheint gut ..
%Vor%Auch wenn ich log4j sehe, kann ich die falsche Bindung sehen
Sie können sehen, dass der Postleitzahlwert 1764 an den ersten Parameter gebunden ist, der Adresse2_.FDL
ist %Vor%Später wird dem zweiten Parameter, der cid ist, der korrekte vorherige Wert für fdl zugewiesen, der 'N'
ist %Vor%Später wird dem dritten Parameter, der did ist, der korrekte vorherige Wert für cid zugewiesen, der 1
ist %Vor%Später wird dem vier Parameter, der zipCode ist, der korrekte vorherige Wert für did zugewiesen, der 2 ist %Vor%
Natürlich stimmt die generatedsql log4j-Bindung
überein %Vor%Wie Sie sehen können, ist die Bindung eindeutig falsch.
Erwartet & lt; ---------------- & gt; Realität
%Vor%Was ich denke passiert Hibernate mischen die Parameter-Positionen aus irgendeinem Grund.
Ich habe Hibernate 4.3.4 benutzt, als dieses Problem auftrat, aber ich sehe einen ähnlichen Fehler, der in 5.2.2 behoben wurde Ссылка und ich upgraden auf Hibernate 5.2.2 und das selbe Problem stolperte ich habe viele Foren gesehen, die dieses Problem melden, warum Hibernate es nicht repariert? Natürlich habe ich Workarounds, aber dieses Problem ist sehr ärgerlich
Wenn ich die 2 createAlias mit nicht-Kriterium verwende, funktioniert alles wie erwartet
%Vor%Umgebung
%Vor%Ein anderes ähnliches Forum
%Vor%AKTUALISIEREN
Die Parameter gehen falsch, auch wenn 2 Parameter
sind %Vor%Wie Sie sehen können, ist die Bindung eindeutig falsch.
Erwartet & lt; ---------------- & gt; Realität
%Vor%... und das gleiche Problem rüber kommen Ich habe viele Foren gesehen, die dieses Problem melden, warum Hibernate es nicht behebt?
org.hibernate.Criteria
API gilt als veraltet:
Hibernate bietet eine ältere, ältere
org.hibernate.Criteria
API, die sollte als veraltet gelten. Keine Feature-Entwicklung wird angestrebt diese APIs. Schließlich werden Hibernate-spezifische Kriterien Features sein als Erweiterungen der JPA portiertjavax.persistence.criteria.CriteriaQuery
.
Daher sollten Sie in zukünftigen Versionen keinen großen Aufwand im Zusammenhang mit org.hibernate.Criteria
API (einschließlich Fehlerbehebung) erwarten.
Ich schlage vor, dass Sie zu JPA CriteriaQuery
API migrieren. Allerdings mag ich es persönlich auch nicht, und ich benutze immer entweder JPQL / HQL direkt oder QueryDSL, was ich als eine sehr gute Balance zwischen JPQL-String und der hohen Ausführlichkeit von CriteriaQuery
APIs empfinde.
Tags und Links java hibernate hibernate-5.x