2017-01-26 6 views
0

I Frühling Daten sind mit (JPA-Repository) und ich habe die folgenden Einrichtungen:JPQL durch Attribut in der Liste wählt

public class City{ 
    .... 
    private Street street; 
    .... 
} 

public class Street{ 
    ... 
    private List<Building> buildings; 
    ... 
} 

public class Building{ 
    ... 
    private List<Flat> flats; 
    .... 
} 

public class Flat{ 
    ... 
    private boolean lightsOn; 
    ... 
} 

Ich mag eine Abfrage erstellen, um alle (distinct) Städte zu erhalten, die an hat mindestens eine Wohnung mit eingeschalteten Leuchten.

habe ich versucht, diese Anfrage:

@Query("select distinct c from Cities c where c.street.buildings.flats.lightsOn = true") 

bekam aber diese Fehlermeldung:

The state field path 'c.street.buildings.flats.lightsOn' cannot be resolved to a valid type. 

Wie kann ich das tun?

+0

Ich bin nicht vertraut mit JPQL. Ist es die Tatsache, dass Gebäude (und Wohnungen) 'List's sind – Michael

+0

@Michael - ich bin sicher, dass es ist - ich weiß nur nicht, was die richtige Abfrage ist (ich bin mir sicher, dass es einen Weg gibt) – Noam

+0

@Gimby - Danke für das Bemerken des Tippfehlers (änderte meine Frage) - immer noch diesen Fehler – Noam

Antwort

-1

dies ist der SQL-Code:

select * from city as c where c.idcity in 
    (select s.idcity from street as s where c.idcity = s.idcity and s.idstreet in 
     (select b.idstreet from building as b where b.idstreet = s.idstreet and b.idbuilding in 
      (select f.idbuilding from flat as f where f.idbuilding = b.idbuilding and f.lightsOn = 1) 
     ) 
    ) 

, wenn Sie Schwierigkeiten, es zu JPQL konvertieren finden Sie mir sagen :).

+0

Können Sie es bitte in JPQL konvertieren ...? und kann es mit Join getan werden? Was ist besser? – Noam