[英]One to Many Relationship with same Entity
請在下面找到實體代碼,
@Entity
public class A implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY, mappedBy="parentActivity")
private Set<A> subActivities;
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinColumn(name = "PARENTACTIVITYID", insertable = true, updatable = true)
private A parentActivity;
// Getters, Setters, serialVersionUID, etc...
}
如果我們想同時堅持父母和孩子,那么下面的代碼可以完美地運行
public static void main(String[] args) {
EntityManager em = ... // from EntityManagerFactory, injection, etc.
em.getTransaction().begin();
A parentActivuty = new A();
A subActivity1 = new A();
A subActivity2 = new A();
son.setParentActivity(parent);
daughter.setParentActivity(parent);
parent.setSubActivity(Arrays.asList(subActivity1, subActivity2));
em.persist(parent);
em.persist(son);
em.persist(daughter);
em.getTransaction().commit();
}
但在這種情況下,我在數據庫中有父對象,並希望持久保存子對象可能的解決方案......?
您從數據庫中獲取父級,執行附件並保留兩個子級:
A parent = em.get(A.class, parentId);
A son = new A();
A daughter = new A();
son.setParentActivity(parent);
daughter.setParentActivity(parent);
em.persist(son);
em.persist(daughter);
parent.getSubActivities().add(son);
parent.getSubActivities().add(daughter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.