2009-06-02 16 views
12

我有一堂課我不確定如何正確註釋。如何使用hibernate JPA批註映射嵌套集合Map <Key,List <Values>>?

我對持有人::數據目標:

  • 名單應該不是比較,而是由數組中的元素的自然順序維持秩序。 (如果有幫助,這可以是一個ndx列。)
  • 持有者將有唯一的數據引用,所以級聯全部也可能適用。

我也打開了一個不同的設計,刪除地圖,如果這將使更清潔的設計。

@Entity 
public class Holder extends DomainObject { 
    private Map<Enum,List<Element>> data; 
} 

@Entity 
public class Element extends DomainObject { 
    private long valueId; 
    private int otherData; 
} 

@Mappedsuperclass 
public class DomainObject { 
// provides id 
// optimistic locking 
// create and update date 
} 
+0

「使得它的列表是基於在安排有序列表「,你能改述嗎? – wds 2009-06-02 14:28:37

+0

@ wds有幫助嗎? – 2009-06-02 15:23:40

回答

8

我不認爲這是可能的休眠(-core)映射集合任何集合:

集合幾乎可以包含任何 其他的Hibernate類型,包括所有 基本類型,自定義類型,組件, 以及當然對其他 實體的引用。

(從the official doc

通知的幾乎和集合類型的遺漏。

解決方法:您需要在集合持有者和元素之間引入一個新類型'。這種類型可以映射爲實體或組件,它引用地圖的原始內容,在這種情況下是列表。

喜歡的東西:

@Entity 
public class Holder extends DomainObject { 
    @OneToMany 
    private Map<Enum,InBetween> inBetweens; 
} 

@Entity 
public class InBetween extends DomainObject { 
    @OneToMany 
    private List<Element> elements; 
} 

@Entity 
public class Element extends DomainObject { 
    private long valueId; 
    private int otherData; 
} 

@Mappedsuperclass 
public class DomainObject { 
// provides id 
// optimistic locking 
// create and update date 
} 

映射的剩下的就要看您的具體情況,但相當簡單。

相關問題