级联删除和显式删除之间的区别
Difference between cascade remove and explicit remove
假设我们有 2 个实体 classes Employee
和 Address
并且 Address
class 在 Employee
class:
@Entity
class Employee {
:
@OneToOne
private Address address;
:
}
如果我们使用显式 remove
:
Employee employee = em.find(Employee.class, 1);
em.getTransaction().begin();
em.remove(employee);
em.getTransaction().commit();
我知道它会从 Employee
table 中删除 employee
实例,但它是否也会从 Address
[中删除引用的 address
实例table?或者我们应该在 address
实例上显式使用 remove
以将其从 Address
table?
中删除
从 documentation of @OneToOne 开始,默认情况下没有级联操作。这意味着在您的情况下,当您删除员工时地址不会被删除。
另见:CascadeType
假设我们有 2 个实体 classes Employee
和 Address
并且 Address
class 在 Employee
class:
@Entity
class Employee {
:
@OneToOne
private Address address;
:
}
如果我们使用显式 remove
:
Employee employee = em.find(Employee.class, 1);
em.getTransaction().begin();
em.remove(employee);
em.getTransaction().commit();
我知道它会从 Employee
table 中删除 employee
实例,但它是否也会从 Address
[中删除引用的 address
实例table?或者我们应该在 address
实例上显式使用 remove
以将其从 Address
table?
从 documentation of @OneToOne 开始,默认情况下没有级联操作。这意味着在您的情况下,当您删除员工时地址不会被删除。
另见:CascadeType