Как я могу получить результаты из таблицы ассоциации, созданной с помощью отношения ManyToMany с Hibernate Jpa - PullRequest
0 голосов
/ 24 октября 2018

Я действительно новичок в hibernate, извините за любую основную ошибку. Итак, у меня есть 2 сущности User и Establishment, и я сопоставил эти сущности с отношением ManyToMany, используя hibernate следующим образом:

User.java entity:

   @Entity
   @Table
   public class User extend AbstractEntity {

   @Column(name = "name", length = 255, nullable = false, unique = true)
   private String name;

   @Column(name = "email", length = 120)
   private String email;

   @Column(name = "phone")
   private String phone;

   @ManyToMany
   @JoinTable(name= "User_Establishment",
   joinColumns = {@JoinColumn(name="user_id") },
   inverseJoinColumns = {@JoinColumn(name="establishment_id") })
   private List<Establishment> establishments;


   public List<Establishment> getEstablishments() {
         return establishments;
   }

   public void setEstablishment(List<Establishment> establishments) {
         this.establishments= establishments;
   }
   }

и сущность Establishment.java:

   @Entity
   @Table
   public class Establishment extend AbstractEntity{

     @Column(name="nif", nullable=false, length=10)
     private String nif;

     @Column(name="code", nullable=false, length=11)
     private String code;

     @Column(name="name", nullable=false)
     private String name;

     @Column(name="address")
     private String address;

     @ManyToMany(mappedBy = "establishments")
     private List<User> users;

     public List<User> getUser() {
           return users;
     }

     public void setUser(List<User> users) {
           this.users= users;
     }

   }

у обоих сущностей есть Id, его просто нет, потому что я расширяю абстрактный класс, который имеет эти значения.

И он создал таблицу в базе данных с именем User_Establishment примерно так:

|---------------------|------------------|
|      user_id        | establishment_id |
|---------------------|------------------|
|          12         |         34       |
|---------------------|------------------|

Пока все хорошо, я могу правильно добавить значения в таблицу, используя seters и geters.Но теперь я хочу получить эти значения, используя запрос с Hibernate, но я действительно не знаю, как это сделать, потому что, когда я пытаюсь создать запрос для доступа к этим данным в репозитории, я не могу, потому что у меня нет репозитория длятаблица ассоциации.

Итак, задавая user_id в качестве параметра, я хочу получить каждый от_установки, чтобы получить все из таблицы заведений, указав установочный_идентификатор

. Есть ли способ сделать это?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Если цель состоит в том, чтобы получить все заведения пользователя, с помощью Spring Data JPA очень просто.

User user = userDao.findById(userId);
List<Establishment> establishments = user.getEstablishments();

Приведенного выше кода должно быть достаточно.

0 голосов
/ 24 октября 2018

Репозиторий обычно - это просто место для размещения логики, связанной с постоянством, и нет необходимости создавать ее, если вы не подразумеваете что-то другое.

Каждый раз, когда вы запрашиваете пользователя или предприятие, вы можете перемещаться по соответствующей ассоциациии получите данные, которые вам нужны:

User user = entityManager.find(User.class, "SOMENAME");
user.getEstablishments(); // should give the related values`    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...