JPA:保留包含原始 "key" 值的 Map
JPA: persist a Map including the original "key" value
我需要使用 JPA 存储一个复杂的树状对象结构。
有一个 "top-level" class A,因此我可以在其上执行 CASCADE.ALL 但我对 Class B 和 a 的子对象有问题HashMap 字段。
Map 的 "key" 是对象本身的哈希码,存储为 "value"。
当我级联持久化对象 B 时,数据库中的 "key" 列始终是 "null"( 为什么 ?),即使该对象有一些键-值对。
我尝试了@MapKey 之类的东西,但是当我稍后从数据库加载对象时,键值不再是哈希码而是自动生成的 ID(对我没有用)。
我也为地图尝试了@ElementCollection,但后来我得到了一个同步错误(我认为这是因为我只从顶层class触发了整个持久化并且一些反对指向每个其他)。
@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;
感谢您的帮助,
亚历克斯
@MapKey(name="hashField")
散列值必须显式存储在 OtherEntity.hashField 中。
mapkey 用于告诉哪些其他对象属性被用作键值
我需要使用 JPA 存储一个复杂的树状对象结构。
有一个 "top-level" class A,因此我可以在其上执行 CASCADE.ALL 但我对 Class B 和 a 的子对象有问题HashMap 字段。
Map 的 "key" 是对象本身的哈希码,存储为 "value"。
当我级联持久化对象 B 时,数据库中的 "key" 列始终是 "null"( 为什么 ?),即使该对象有一些键-值对。
我尝试了@MapKey 之类的东西,但是当我稍后从数据库加载对象时,键值不再是哈希码而是自动生成的 ID(对我没有用)。
我也为地图尝试了@ElementCollection,但后来我得到了一个同步错误(我认为这是因为我只从顶层class触发了整个持久化并且一些反对指向每个其他)。
@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;
感谢您的帮助, 亚历克斯
@MapKey(name="hashField")
散列值必须显式存储在 OtherEntity.hashField 中。 mapkey 用于告诉哪些其他对象属性被用作键值