Ich habe eine Klassenstruktur wie folgt:
%Vor% Ich habe Folgendes versucht, um alle CartItems
zu erhalten, die einen Verweis auf ein Book
mit title = 'Foo'
haben:
Aber leider führt dies zu einem Fehler (macht für mich Sinn, da title
in Book
ist, nicht in Article
...):
Allerdings konnte ich mit dem folgenden HQL erreichen, was ich möchte:
%Vor%Warum funktioniert letzteres und kann ich etwas Ähnliches mithilfe der Kriterien-API erreichen?
Ich bin kein Experte, aber aus Sicht der OO würde ich sagen, dass ein Artikel keinen Eigentumstitel hat und deshalb nicht in der CarItem-Eigenschaft namens article gefunden wird.
Vielleicht sollten Sie prüfen, ob Artikel vom Typ Buch ist.
Ich bin mir nicht sicher, wie dies mit CriteriaBuilder
funktioniert %Vor%Ich hatte das gleiche Problem und habe dank chris eine Lösung gefunden (siehe JPA Criteria API wo Unterklasse ).
Dafür benötigen Sie JPA 2.1, und Sie verwenden eines der CriteriaBuilder.treat()
Methoden. Ersetzen Sie einfach Ihre builder.equal...
-Zeile durch:
Tags und Links sql jpa hibernate criteria polymorphism