我有一节课,我不确定如何正确注释。
我对Holder :: data的目标:
我也愿意采用不同的设计来移除地图,如果这样可以实现更清洁的设计。
@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 :(得分:9)
我认为hibernate(-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
}
映射的其余部分取决于您的具体情况,但相当简单。
答案 1 :(得分:2)
这是一个关于hibernate http://blog.xebia.com/2007/10/05/mapping-multimaps-with-hibernate/
中集合集合的博客希望它会有所帮助。它帮助了我。
此致 安东
答案 2 :(得分:-1)
请注意,Hibernate文档的推荐链接似乎已过时,我发现以下工作:http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html