我有2个实体,组和成员。它们使用@ManyToMany关系进行映射。我正在使用Spring Data JPA进行映射和数据库操作。
GroupEntity
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="Group_Members",
joinColumns= @JoinColumn(name="id"),
inverseJoinColumns= @JoinColumn(name="memberId")
)
Set<MemberEntity> members = new HashSet<>();
MemberEntity
@ManyToMany(cascade=CascadeType.ALL, mappedBy="members")
Set<GroupEntity> groups = new HashSet<>();
我已经成功实现了创建,读取和删除操作。我遇到的问题与更新有关。
我有3个表,预期的是,组-包含组主键和其他详细信息,成员-包含成员主键和在创建组时创建的成员详细信息,以及Group_Members表-这是包含组ID的联接表以及属于单个组的会员ID。到目前为止,一切都很好。效果很好。
现在要进行更新,当我收到请求时,我并不需要保存该组,而是希望Cascade Merge来处理它。相反,我需要的是先获取该组的成员列表,然后进行检查,以防万一成员被删除,是否允许删除该成员。
由于某些业务原因,某些成员无法从本集团中删除。因此,如果碰巧遇到试图删除不应该删除的成员的Update请求,则需要发送回适当的消息。
为此,我需要获取该组的所有成员的列表。现在,我不确定如何执行此操作。因为我在存储组及其成员映射的第三个表上没有任何句柄。我只拥有两个用于组和成员的CrudRepository实例,这些实例用于执行与它们相关的操作。
@Repository
public interface GroupRepository extends CrudRepository<GroupEntity, Integer> {
@Repository
public interface MemberRepository extends CrudRepository<MemberEntity, Integer>{
我需要的帮助是找出在使用Spring Data JPA进行ManyToMany映射的情况下如何获取任何特定组的所有成员的列表?
请让我知道是否有人可以提出一些帮助我的建议。
答案 0 :(得分:1)
您的问题看起来有些奇怪-您在Set
中已经有List
的{{1}},但没有Members
的问题,那么这是什么问题呢?在服务类别中GroupEntity
添加这样的方法:
GroupService
答案 1 :(得分:0)