簡體   English   中英

持久化后如何填充整個實體?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM