2016-05-31 3 views
0

ich dies mit JPA implementiert haben (Eclipse-Verbindung) Classes (Ich kann keine Bilder posten noch)JPQL: Zugriff geerbt Attribute in einer Abfrage

Jetzt eine Abfrage nach oben Ich gründe, die alle zeigt mir die Semester, in denen ein bestimmter Lehrer Unterricht hat.

Query query2 = em 
    .createQuery("FROM Semester s, IN (s.lesson) l, IN(l.lessonTeacher) lT1 WHERE lT1.teacher.lastname = :lastname"); 
query.setParameter("lastname", "Spooner"); 
List<Semester> resultList2 = query.getResultList(); 
for(Semester s : resultList2){ 
    System.out.println(s.getname()); 
} 

Mein Problem ist folgendes: lT1.teacher.lastname =: Nachname ich nicht das geerbte Attribut zugreifen können.

The state field path 'lT1.teacher.lastname' cannot be resolved to a valid type. 

Kann any1 helfen?

+0

Sie werden den Lehrertisch beitreten müssen mit ‚lT1.teacher‘, wie Sie für ‚l getan haben .lessonTeacher '. – Priyesh

+0

FWIW JPQL beginnt mit "SELECT s"; Dieser Beitrag ist ungültig/nicht portabel. Niemand möchte, dass du "Bilder" von Klassen postest. Veröffentlichen Sie den entsprechenden CODE! –

+0

Bitte zeigen Sie uns den Code der Klassen –

Antwort

0

Das Problem ist nicht mit dem geerbten Attribut. Sie hinzufügen müssen zu einem anderen (zum Teacher Tabelle) verbinden, um Ihre Abfrage wie unten dieses Problem zu lösen:

Query query2 = em 
    .createQuery("FROM Semester s, IN (s.lesson) l, IN(l.lessonTeacher) lT1, lT1.teacher t WHERE t.lastname = :lastname"); 
query.setParameter("lastname", "Spooner"); 
List<Semester> resultList2 = query.getResultList(); 
for(Semester s : resultList2){ 
    System.out.println(s.getname()); 
} 
+0

Warum? lT1.teacher.lastname sollte denselben inneren Join ausführen wie "lT1.teacher t" in der from-Klausel. – Chris

+0

JPA tut das nicht explizit, denke ich. Immer wenn ich versucht habe, dass es nicht explizit hinzugefügt wurde, musste ich explizit der Eigenschaft beitreten. – Priyesh

+0

Es sollte nach der Spezifikation, und ist nur ein Problem mit der Sammlung Referenzen .. Verwendung eines. zwischen Referenzen zwingt eine innere Verbindung zwischen den Entitäten. – Chris