gpt4 book ai didi

java - 如何使用 hibernate JPA 注释映射嵌套集合 Map>?

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:55 25 4
gpt4 key购买 nike

我有一门课,我不确定如何正确注释。

我对 Holder::data 的目标:

  • List 应该不是通过比较器而是通过数组中元素的自然顺序来维护顺序。 (如果有帮助,可以是 ndx 列。)
  • Holder 将拥有对数据的唯一引用,因此 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
}

最佳答案

我不认为使用 hibernate(-core) 可以映射任何集合集合:

Collections may contain almost anyother Hibernate type, including allbasic types, custom types, components,and of course, references to otherentities.

(来自 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
}

映射的其余部分取决于您的具体情况,但相当简单。

关于java - 如何使用 hibernate JPA 注释映射嵌套集合 Map<Key,List<Values>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com