我正在使用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