[英]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
实体,则不会自动填充父对象。
有没有办法实现这一目标?
看起来这应该会有所帮助。
如果你想提供之间的正确参考Child
和Parent
实体和推迟的实际装载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.