【发布时间】:2019-11-08 07:59:56
【问题描述】:
我有 2 个实体,组和成员。它们使用@ManyToMany 关系映射。我正在使用 Spring Data JPA 进行映射和数据库操作。
集团实体
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="Group_Members",
joinColumns= @JoinColumn(name="id"),
inverseJoinColumns= @JoinColumn(name="memberId")
)
Set<MemberEntity> members = new HashSet<>();
会员实体
@ManyToMany(cascade=CascadeType.ALL, mappedBy="members")
Set<GroupEntity> groups = new HashSet<>();
我已经成功实现了创建、读取和删除操作。我遇到的问题是更新。
正如预期的那样,我有 3 个表,Group - 包含 Group 主键和其他详细信息,Members - 包含在创建 Group 时创建的成员主键和成员详细信息,以及 Group_Members 表 - 这是包含 Group Id 的连接表以及属于各个组的成员 ID。到现在为止还挺好。效果很好。
现在进行更新,当我收到请求时,我不仅仅需要保存该组并希望 Cascade Merge 能够处理它。相反,我需要的是先获取该组的成员列表,然后进行检查,以防成员被删除,是否允许删除。
由于某些业务原因,某些成员无法从组中删除。因此,如果我碰巧遇到试图删除不应删除的成员的更新请求,我需要发回适当的消息。
为此,我需要获取该组的所有成员列表。现在我不知道该怎么做。因为我对存储组及其成员映射的第三张表没有任何句柄。我只有 2 个用于 Group 和 Member 的 CrudRepository 实例,我用它们来执行与它们相关的操作。
@Repository
public interface GroupRepository extends CrudRepository<GroupEntity, Integer> {
@Repository
public interface MemberRepository extends CrudRepository<MemberEntity, Integer>{
我需要的帮助是找出如何在使用 Spring Data JPA 进行多对多映射的情况下获取任何特定组的所有成员的列表?
如果你们中的任何人可以提出一些建议来帮助我,请告诉我。
【问题讨论】:
标签: java database hibernate spring-data-jpa many-to-many