带有级联类型的OneToMany上的java Hibernate TransientObject异常。如果我们在保存之前调用迭代器()就可以了
我在冬眠状态下有一段恋情,如下所示:
class Container {
@OneToMany( cascade = {CascadeType.ALL}, mappedBy = "container", orphanRemoval = true)
List<Item> items;
}
简化的场景是,我从数据库中加载一个Container
对象(容器),并尝试向container.items
添加一个Item
,如下所示:
Container container = entityManager.find(Container.class,id);
container.getItems().add(new Item(container));
entityManager.merge(container);
一切都很好。但在我的例子中,我想迭代项目并检查一些东西,但当我调用container.getItems().iterator
并保存container
时,如下所示:
Container container = entityManager.find(Container.class,id);
container.getItems().add(new Item(container));
container.getItems().iterator(); // here is the change
entityManager.merge(container); // here is where exception occured
我得到以下错误
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mypackage.items
我不知道为什么会发生这种异常
# 1 楼答案
项目对象需要有对其父对象的引用: