我正在使用Spring数据JPA和postgres数据库。 我有两个实体,即组和用户。 我已经使用Spring的CrudRepository接口创建了存储库。JPA- ManyToMany关系删除操作从辅助表中删除所有实体
@Entity
public class Group {
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="group_user_bridge",
[email protected](name="joinTbl_groupid", referencedColumnName="groupid"),
[email protected](name="joinTbl_agentid", referencedColumnName="userid")
)
private Set<User> users;
....
}
类用户
@Entity
public class User {
@ManyToMany(mappedBy="users",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private List<Group> groups;
.....
}
Repository.save:正常工作。
@Test
public void addGroup(){
Group hg = new Group();
User h1 = new User();
User h2 = new User();
some setters for user entity object
hg.setName("testGroup");
... some setters for groups
HashSet<User> groupMembers = new HashSet<User>();
groupMembers.add(h2);
groupMembers.add(h1);
hg.setGroupMembers(groupMembers);
hg = groupRepository.save(hg);
问题
当我删除使用groupRepository.delete(groupEntity)组,将删除组,组和用户从连接表的关联。
但它也从用户表中删除用户。实际上用户记录不应该被删除。
如何防止用户在这里删除?
我使用@SQLDelete注释软删除组和用户记录。但我无法为连接表记录实现相同的功能。 连接表中的记录从我想要阻止的表中硬删除。
如何防止连接表记录的硬删除?
在此先感谢。
感谢您的回复。将检查SAVE_UPDATE并检查。我正在考虑一个场景,用户可以在整个组中移动,因此,如果一旦组被删除,用户应保持完好。 – Yogesh