使用@ElementCollection Hibernate未保存的实例异常

gub*_*bby 7 java hibernate java-ee-6 jpa-2.0

我得到一个例外

object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例

抛出以下代码:

public void addThing(String key, String someData) {
    Thing thing = new Thing();
    booking.setData(someData);
    booking.setParent(this);
    bookings.put(key, thing);
}
Run Code Online (Sandbox Code Playgroud)

Parent映射是:

@ElementCollection(fetch=FetchType.EAGER)
@Column(name="thing", nullable=false)
@MapKeyColumn(name="key")
@JoinColumn(name="parent_id")
protected Map<String, Thing> things = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)

孩子('Thing')映射是:

@ManyToOne
private Parent parent;
Run Code Online (Sandbox Code Playgroud)

根据Hibernate手册:

a上没有级联选项ElementCollection,目标对象始终与父级一起保持,合并,删除.

但是 - 在我更改为新@ElementCollection映射之前解决了一个问题,即我为查询返回了明显的幻像元素,这段代码工作正常.

我知道我可以单独保存元素然后做一个引用,但我更喜欢自动完成它,我认为这是它应该工作的方式.有任何想法吗?

ska*_*man 10

@ElementCollection不应该与实体集合一起使用; 它与收藏品一起使用@Embeddable.如果Thing是实体,则不使用@ElementCollection,您使用@OneToMany.

的javadoc@ElementCollection:

定义基本类型或可嵌入类的实例的集合