2017-01-26 129 views
0

我使用Spring的數據(JPA的存儲庫)中選擇,我有以下實體:JPQL通過屬性列表

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; 
    ... 
} 

我想創建一個查詢來獲取所有(不同)的城市有在至少有一個單位帶電燈。

我嘗試此查詢:

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

,但得到這個錯誤信息:

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

我怎麼能這樣做?

+0

我對JPQL並不熟悉。是否事實上,建築物(和單位)是'列表' – Michael

+0

@邁克爾 - 我敢肯定 - 我只是不知道什麼是正確的查詢(我確信有一種方法) – Noam

+0

@Gimby - 感謝您注意到錯字(改變了我的問題) - 仍然得到這個錯誤 – Noam

回答

-1

這是SQL代碼:

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) 
     ) 
    ) 

,如果你發現難以將其轉換爲JPQL只要告訴我:)。

+0

你能把它轉換成JPQL ...嗎?並可以使用連接來完成?什麼更好? – Noam