使用JPA批注自动从父级删除子级和从子级删除父级

假设我们有3个Entities对象类:

class Parent {

String name;

List<Child> children;

}

class Child {

String name;

Parent parent;

}

class Toy {

String name;

Child child;

}

如何使用JPA2.x(或hibernate)批注来:

  1. 父级删除时(一对多)自动删除所有子级
  2. 删除后自动从子级列表中删除子级(多对一)
  3. 儿童删除时(一对一)自动删除玩具

我正在使用Hibernate 4.3.5和mysql 5.1.30。

谢谢

回答:

如本文所述,remove 实体状态转换应从父级到子级联,而不是相反。

您需要这样的东西:

class Parent {

String name;

@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)

List<Child> children = new ArrayList<>();

public void addChild(Child child) {

child.setParent(this);

children.add(child);

}

public void removeChild(Child child) {

children.remove(child);

child.setParent(null);

}

}

class Child {

String name;

@ManyToOne

Parent parent;

@OneToOne(mappedBy = "child", cascade = CascadeType.ALL, orphanRemoval = true)

Toy toy;

}

class Toy {

String name;

@OneToOne

Child child;

}

以上是 使用JPA批注自动从父级删除子级和从子级删除父级 的全部内容, 来源链接: utcz.com/qa/405611.html

回到顶部