簡體   English   中英

休眠:使用集合中的屬性值創建HQL查詢

[英]Hibernate: create HQL Query with Attribute values from Sets

我想創建一個HQL查詢,它可以訪問一組特定對象的屬性, 讓我通過一個簡短的示例進行說明

班級組織

public class Organization ...{
    private int orgid;
    private Set<DomainValue> languages = new HashSet<language>(0);
    private Set<Address> adresses = new HashSet<Address>(0);
    ...
}

班級地址

public class Address  implements java.io.Serializable {
   private int addressId;
   private String city;
   private String postalCode;
   private String streetName;
   private String houseNumber;
   ...
}

語言

public class Orgunitlanguage  implements java.io.Serializable {
   private int orgLanguageId;
   private Orgunit orgunit;
   private Integer languageCd;
   ...
}

這些示例是工作的休眠POJO的代碼段。 所以我有一個可以具有多種地址和語言的組織。

我希望用戶指定搜索條件,但將其限制為每種搜索條件中的一種,因此僅一種語言,一種郵政編碼等。

假設用戶想要門牌號為22的英語組織

所以我會像這樣建立一個hql查詢:

"from organization o where o.languages.languageCd = 1 AND o.addresses.housenumber = 22"

好吧,那不起作用(非法語法),我如何以正確的方式訪問這些Set? 請記住,我要訪問特定的屬性,而不僅僅是整個對象(這很容易)。

我似乎找不到我能理解的文檔,因此進行一些解釋將是不錯的。

查詢集合的正確方法是這樣的

from Organization o join o.languages l join o.addresses a where l.languageCd = 1 AND a.housenumber = 22

但是,此查詢將返回具有至少一種語言( languageCd = 1 housenumber = 22 languageCd = 1至少一個地址( housenumber = 22任何組織。 它不會過濾掉不符合條件的語言和地址。 檢查此答案對此有更多解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM