[英]How can I fill the complete entity after persist?
我正在使用Hibernate持久性API。 我有兩個實體,您可以檢查其中的父實體:(子實體不包含對父實體的任何引用-因為從邏輯上講這不是必需的。)
@Entity(...)
public class ParentEntity implements Serializable {
@Id
private Integer id;
// ...
@OneToMany(fetch = FetchType.LAZY)
@org.hibernate.annotations.Cascade({ org.hibernate.annotations.CascadeType.ALL }) // losing JPA's portability
@JoinColumn(name = "parent_id", referencedColumnName = "id")
private Set<ChildEntity> children;
// ...
}
當我保留新的父實體時,將執行數據庫觸發器。 此觸發器默認插入一些子級值。 但是,堅持不懈之后,孩子們就不在收藏中了。 我該如何解決? 這是我的道方法:
@Transactional(readOnly = false)
@Override
public Parent addParent(String name) {
Parent temp = new Parent(name);
entityManager.persist(temp);
return entityManager.find(Parent.class, temp.getId()); // return temp;
}
非常感謝您所做的一切。
Parent temp = new Parent(name);
entityManager.persist(temp);
如果我能正確處理你
您正在創建一個新的父對象(沒有任何子實體)並將其持久化。 因此,沒有任何子級的父對象將保留在DB中。
當你做
entityManager.find(Parent.class, temp.getId());
您不能期望擁有帶有子實體的父類。
由於您是通過db觸發器持久存儲子對象,因此必須有某種方法將parent_id( tem.getId() / parent.getId() )放入其中
找到持久的父對象的子對象沒有其他方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.