【发布时间】:2015-02-22 19:47:07
【问题描述】:
我需要使用 JPA 存储一个复杂的树状对象结构。
有一个“顶级”A 类,因此我可以在其上执行 CASCADE.ALL,但我遇到了 B 类的子对象和 HashMap 字段的问题。
Map 的“键”是对象本身的哈希码,存储为“值”。
当我级联持久化对象 B 时,数据库中的“键”列始终为“空”(为什么?),即使该对象有一些键值对。
我尝试了一些类似@MapKey 的东西,但是当我稍后从数据库中加载对象时,键值不再是哈希码,而是自动生成的 id(对我没用)。
我也为地图尝试了@ElementCollection,但随后出现同步错误(我认为这是因为我仅从顶级类触发整个持久化,并且一些对象指向彼此)。
@Entity
public class B
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(cascade = CascadeType.ALL)
//Tried @MapKey or @ElementCollection
public Map<Integer, OtherEntity> otherEntities;
感谢您的帮助, 亚历克斯
【问题讨论】:
标签: java hibernate jakarta-ee jpa eclipselink