【发布时间】:2011-02-19 23:37:33
【问题描述】:
我是 JPA/Hibernate 的新手,我想知道,更新复杂实体的最佳方式通常是什么?
例如,考虑下面的实体:
@Entity
public class Employee {
@Id
private long id;
@Column
private String name;
@ManyToMany
private List<Positions> positions;
// Getters and setters...
}
更新职位引用的最佳方式是什么?目前,一项服务正在向我传递员工应该拥有的职位列表。创建它们很容易:
for (long positionId : positionIdList) {
Position position = entityManager.find(positionId);
employee.getPositions.add(position);
}
entityManager.persist(employee);
但是,在更新员工时,我不确定更新员工职位的最佳方式是什么。我认为有两种选择:
-
我解析位置 id 的列表并确定是否需要添加/删除该位置(这似乎不是一个有趣的过程,并且可能会导致许多删除查询)
我删除所有位置,然后重新添加指定位置。 JPA/Hibernate 中是否有一种方法可以使用一个 sql 命令删除所有子项(在本例中为位置)?
我是不是想错了?大家有什么推荐的?
【问题讨论】:
标签: java hibernate jpa jakarta-ee jpa-2.0