JPA-Kriterien-API: Abfrage-Eigenschaft der Unterklasse

9

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:

%Vor%

Aber leider führt dies zu einem Fehler (macht für mich Sinn, da title in Book ist, nicht in Article ...):

%Vor%

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?

    
msonntag 01.08.2011, 20:03
quelle

2 Antworten

1

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%     
gadeynebram 21.04.2012 13:15
quelle
1

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:

%Vor%     
Etienne Miret 15.08.2014 12:02
quelle