繁体   English   中英

持久化新实体后如何使用其父实体的信息填充实体中的字段

[英]How to fill field in entity with information from its parent entity after persisting a new entity

我有以下实体:

@Entity()
public class Parent {

    @Id
    private Long id;

    private String name;

    ...

}
@Entity()
public class Child {

    @Id
    private Long id;

    private String name;

    @Column(name = "parent_id")
    private long parent_id;

    @ManyToOne(targetEntity = Parent.class)
    @JoinColumn(name = "parent_id", insertable = false, updatable = false)
    private Parent parent;

    ...

}

Child实体必须有一个Parent实体。

我希望Child类将 parent_id 作为一个字段和一个 Parent 对象,其中包含来自其父级的所有字段。

通过这种方式,我可以保存一个只有Parent id 的Child实体,理想情况下,当从数据库中检索Child时,将填充Child的父对象。

我已经实现了,从数据库中检索Child ,父字段填充了Parent实体,但是如果我保留一个只有 parent_id 的新Child实体,则不会自动填充父对象。

有没有办法实现这一目标?

看起来应该会有所帮助。

如果你想提供之间的正确参考ChildParent实体和推迟的实际装载Parent实体。 你应该做这样的事情:

  Child newChild = new Child();
  newChild.setParent(entityManager.getReference(Parent.class, parent_id));
  // ...
  entityManager.persist(newChild);

或者,如果您想让newChild具有完全初始化的Parent而不是entityManager.getReference您应该使用entityManager.find(Parent.class, parent_id)

PS @JBNizet 在评论中给出了同样的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM