2014-11-14 101 views
0

鑑於簡化模型:Hibernate的標準列表必須包含另一個列表

public class Access { 
    private Set<Tag> tags; 
} 

public class Item { 
    private Set<Tag> tags; 
} 

接入許可,對完全包含他的標籤,沒有任何問題,如果該項目有多個標籤或不是每一個項目的訪問。

但我不知道如何爲此創建一個hibernate標準查詢。 你能幫我嗎?

回答

0

你實際上不需要做任何事情,然後告訴Hibernate總是將它加載到你的實體中。

所以選項之一,負載總是:

public class Access { 

     @OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true, targetEntity = Tag.class, fetch = FetchType.EAGER) 
     @JoinColumn(nullable = true) 
     protected Set<Tag> tags; 
    } 

所以一對多註解告訴Hibernate來尋找標籤鏈接到您的表標籤表,始終做到這一點:FetchType.EAGER

實際上Hibernate會在Tag表中創建兩個帶有外鍵的表。

如果你不想懶惰加載這個列表,你可以設置FetchType.LAZY,那麼你需要做一些額外的工作,以填補這個列表。

簡單的負載將填補所有的值存儲:

session.get(Access.class, key); 

過濾訪問列表的標籤看到這樣的回答:How to join two different criterias under Hibernate?

+0

這不是真的我的需要。給一個訪問(比方說)10個標籤。我想要所有的標籤包含所有項目的所有給定的10個標籤...在一個請求中,如果可能的話 – farvilain

+0

http://stackoverflow.com/questions/17385579/how-to-join-two-different-criterias-under-hibernate – Drejc

相關問題