我正在将 JPA2.O 与 Hibernate 一起使用。我在用户和地址之间有一对多的关系,并且我对这种关系有以下配置:
cascade = CascadeType.ALL, fetch = FetchType.LAZY,
例如,我在数据库表中有以下条目:
用户表
Column: UserID | UserName
row1: User1 | UserName
地址表
Column: AddressId| UserID | Address
row1: Address1 | User1 | Actual Address
row2: Address2 | User1 | Actual Address
我可以通过 userId 使用 find 来获取用户实体:
User user = entityManager.find(User.class, userId);
并且还可以使用 user.getAddresses() 获取答案。getAddressess() 的代码如下:
public class User{
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
public Set<Address> getAddresses() {
return this.addresses;
}
}
现在我正在尝试做的是获取一组地址并删除一个条目。假设我在第一次获得地址 1 和 2 时获取了地址集。我从地址集中删除了地址 2 实体。现在用户实体指向只有 1 个用于地址 1 的条目的集合。
现在,如果我使用以下方法合并用户实体,我认为应该从地址表中删除地址 2 的行。但它没有发生。我是否错过了任何事情,或者这不是一种方法。请建议。
entityManager.merge(user);