- 不必替换集合(
team.setUserTeamRoles(new HashSet<UserTeamRole>());
),而必须替换clear()
为现有集合。发生这种情况是因为,如果Hibernate从DB加载了实体(及其集合),它将“管理”它们。跟踪他们的更改。通常,在使用Hibernate时,最好 不要 为集合(列表,集合)创建任何设置器。仅创建吸气剂,并清除其返回的集合,即:
team.getUserTeamRoles().clear();
- 另一件事是您错过了孤立删除(即从父级集合中删除子对象时删除子对象)。要启用它,您需要添加
@oneToMany(orphanRemoval=true)
拥有实体。



