ManyToMany-JPA-如何从映射生成的表中获取数据?

我有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映射的情况下如何获取任何特定组的所有成员的列表?

请让我知道是否有人可以提出一些帮助我的建议。

ali_324 回答:ManyToMany-JPA-如何从映射生成的表中获取数据?

您的问题看起来有些奇怪-您在Set中已经有List的{​​{1}},但没有Members的问题,那么这是什么问题呢?在服务类别中GroupEntity添加这样的方法:

GroupService
,
  1. 获取所有将被删除的成员
  2. 验证是否可以删除它们(需要从 您的身边,算法等)
  3. 如果每个人都适合删除-请将其删除,否则抛出 例外
本文链接:https://www.f2er.com/3139469.html

大家都在问