gpt4 book ai didi

hibernate - hibernate -如何与孤儿一起保存 parent

转载 作者:行者123 更新时间:2023-12-03 12:23:55 25 4
gpt4 key购买 nike

我正在从UI发送对象。将通过引用现有子项来创建该对象。

这是这种关系的简单说明。

class ParentEntity {
@Id
Long id;

@ManyToOne(fetch = FetchType.LAZY)
private ChildEntity child;
}

class ChildEntity {
@Id
Long id;
}



ChildEntity child = new ChildEntity();
child.setId(1);
//parentEntity is created based on data sent from UI
parentEntity.setChild(child);

保存该对象时,Hibernate给我“org.hibernate.TransientPropertyValueException:对象引用了一个未保存的 transient 实例”。

我不必救助 child ,因为我根本不更换 child 。只需要将 child 的ID保存在 parent 的表中。

我尝试使用一些CascadeType,但没有一个起作用。

最佳答案

只需为 child 使用代理:

parentEntity.setChild(entityManager.getReference(ChildEntity.class, childId));
这里的重点是使用 EntityManager.getReference:

Get an instance, whose state may be lazily fetched.


Hibernate将创建仅包含ID的代理,而无需访问数据库。

关于hibernate - hibernate -如何与孤儿一起保存 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com