Как я могу написать метод репозитория jpa для отношения m: m? - PullRequest
1 голос
/ 28 мая 2020

У меня есть связь am: m между EntityOne и EntityTwo

public class EntityTwo{
     private String name;
     @ManyToMany //config here
     private List<EntityOne> entities;
}

public class EntityOne{
     private String description;
     @ManyToMany //config here
     private List<EntityTwo> entities;
}

Как я могу создать метод для репозитория EntityOne без использования аннотации @Query для получения всех EntityOne строки на основе имени EntityTwo? Я пробовал что-то вроде:

List<EntityOne> findAllByEntityTwoName(String name), но это не работает.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вы можете использовать методы запроса данных Spring для достижения вашей задачи. По сути, данные Spring генерируют запрос на основе некоторых правил, с помощью которых вы определяете свой метод.

@Repository
public interface EntityRepository extends JpaRepository<EntityOne, UUID> {

    List<EntityOne> findAllByEntities_Name(String name);
}

В методе findAllByEntities_Name() вы используете метод запроса вместе с Выражениями свойств для создания поиск по свойству имени в поле entites (EntityTwo) из EntityOne

1 голос
/ 28 мая 2020

Допустим, вам нужно запросить EntityOne на основе поля name в EntityTwo.

Вы можете создать такой метод: findAllBy + Имя EntityTwo определено в EntityOne + EntityTwo имена атрибутов, на основе которых вам нужно отфильтровать

Так что в вашем случае это будет

List<EntityOne> findAllByEntitiesName(String name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...