我在休眠中有 OneToMany 关系,如下所示:
class Container {
@OneToMany( cascade = {CascadeType.ALL}, mappedBy = "container", orphanRemoval = true)
List<Item> items;
}
简化的场景是我从数据库中加载一个对象Container
(容器)并尝试像这样添加一个:Item
container.items
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:对象引用了一个未保存的瞬态实例 - 在查询刷新之前保存瞬态实例:mypackage.items
我不知道为什么会发生此异常。