我收到了异常
对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例
抛出以下代码:
public void addThing(String key, String someData) {
Thing thing = new Thing();
booking.setData(someData);
booking.setParent(this);
bookings.put(key, thing);
}
父映射是:
@ElementCollection(fetch=FetchType.EAGER)
@Column(name="thing", nullable=false)
@MapKeyColumn(name="key")
@JoinColumn(name="parent_id")
protected Map<String, Thing> things = Maps.newHashMap();
孩子('Thing')映射是:
@ManyToOne
private Parent parent;
根据Hibernate手册:
ElementCollection
上没有级联选项,目标对象始终保持,合并,与父级一起删除。
但是 - 在我更改为新的@ElementCollection
映射之前解决了一个问题,即我为查询返回了明显的幻像元素,这段代码工作正常。
我知道我可以单独保存元素然后进行引用,但我更喜欢自动完成它,我认为这是应该工作的方式。有什么想法吗?
答案 0 :(得分:10)
@ElementCollection
不应与实体集合一起使用;它与@Embeddable
的集合一起使用。如果Thing
是实体,则不使用@ElementCollection
,而是使用@OneToMany
。
来自@ElementCollection
的{{3}}:
定义基本类型或可嵌入类的实例集合