如何使用Hibernate JPA注解Map嵌套集合Map〈Key,List< Values>>?

nwlqm0z1  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(189)

我有一个类,我不知道如何适当地注解。
我对保持器的目标::数据:

  • 列表不应该按照比较器来维护顺序,而应该按照数组中元素的自然顺序来维护顺序。(如果有帮助的话,可以是ndx列。)
  • 保持器将拥有对数据的唯一引用,因此Cascade all可能也适用。

我也开放一个不同的设计,删除Map,如果这将使一个更干净的设计。

@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
}
xqkwcwgp

xqkwcwgp1#

我认为使用hib(-core)不可能Map任何集合的集合:
集合可以包含几乎任何其他Hibernate类型,包括所有基本类型、自定义类型、组件,当然还有对其他实体的引用。
(from官方文件)
注意几乎和集合类型的省略。
解决方法:您需要在集合保持器和元素之间引入一个新类型。您可以将此类型Map为实体或组件,它引用Map的原始内容,在本例中为列表。
类似于:

@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
}

Map的其余部分取决于您的特定情况,但相当简单。

6l7fqoea

6l7fqoea2#

这是一个关于hibhttp://blog.xebia.com/2007/10/05/mapping-multimaps-with-hibernate/中的集合的博客
希望它能帮上忙。它帮了我。
此致,安东

wqnecbli

wqnecbli3#

请注意,引用的Hibernate文档链接似乎已过时,我发现以下链接有效:http://docs.jboss.org/hibernate/core/3.5/reference/en/html/collections.html

相关问题