2009-06-02 79 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 
} 

映射的剩下的就要看您的具体情况,但相当简单。

相关问题