У меня есть 2 объекта: группа и участники. Они отображаются с использованием отношения @ManyToMany. Я использую Spring Data JPA для операций отображения и DB.
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<>();
Я успешно реализовал операции Create, Read и Delete. У меня проблема с обновлением.
У меня 3 таблицы, как и ожидалось, группа - содержит первичный ключ группы и другие сведения, члены - содержит первичный ключ членов и сведения о членах, созданные при создании группы, и Group_Members. таблица - это таблица соединения, которая содержит идентификаторы групп и идентификаторов участников, принадлежащих отдельным группам. Все идет нормально. Работает хорошо.
Теперь для получения обновлений, когда я получаю запрос, мне не нужно просто сохранять эту группу и надеяться, что Cascade Merge позаботится об этом. Вместо этого мне нужно сначала получить список участников для этой группы, а затем выполнить проверку, в случае, если член удален, разрешено ли его удаление или нет.
Существуют определенные члены, которые не могутбыть исключенным из группы по каким-либо деловым причинам. Так что, если мне доведется встретить запрос на обновление, пытающийся удалить члена, который не должен быть удален, мне нужно отправить правильное сообщение.
Для этого мне нужно получить список всех участников для этогоГруппа. Теперь я не уверен, как это сделать. Потому что у меня нет никакого дескриптора в той третьей таблице, в которой хранится группа и ее отображение членов. Все, что у меня есть, это 2 экземпляра CrudRepository для группы и члена, которые я использую для выполнения операций, связанных с ними.
@Repository
public interface GroupRepository extends CrudRepository<GroupEntity, Integer> {
@Repository
public interface MemberRepository extends CrudRepository<MemberEntity, Integer>{
Здесь мне нужна помощь в выяснении, как получить список всех членов для любого конкретногогруппа в случае сопоставления ManyToMany с использованием Spring Data JPA?
Пожалуйста, дайте мне знать, если кто-нибудь из вас может предложить что-то, чтобы помочь мне.