JPA-аннотации Spring Data для взаимосвязи таблиц «многие ко многим»

0

Я разрабатываю веб-приложение, используя Spring Boot. У меня есть таблицы базы данных следующим образом:

role
----
id  name
1   admin
2   user
3   employee

employee
--------
id  name
1   Juan
2   Pedro
3   Marcos
4   Lucas

user
----
id  employee_id role_id     username    password
1   1           1           juan1       hello
2   1           3           juan2       hello
3   2           2           pedro1      hello
4   2           3           pedro2      hello
5   3           3           marcos      hello
6   4           3           lucas       hello

Ниже перечислены классы объектов домена:

public class Role  {
...
    @ManyToMany(mappedBy = "roles")
    private Set<Employee> employees;

---
public class Employee {
...
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "user", 
        joinColumns = @JoinColumn(name = "employee_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")
    )
    private Set<Role> roles;

Мне интересно, какие аннотации мне нужно использовать в классе User. Я следую этому руководству. Но у этого нет третьего класса, так как третья таблица (book_publisher) не имеет полей, отличных от внешних ключей (book_id, publisher_id).

Спасибо.

Теги:
spring-boot
hibernate
jpa
spring-data-jpa

1 ответ

1
Лучший ответ

Вам понадобится много ассоциаций от Employee to User, потому что User является так называемой атрибутивной связью с атрибутами.

Пользовательский объект будет иметь составной идентификатор в качестве первичного ключа.

Пожалуйста, найдите отличную статью по этой теме из Thorben Jansen: https://www.thoughts-on-java.org/many-relationships-additional-properties/

  • 0
    Спасибо за быстрый ответ. Я посмотрю на это.
  • 0
    @JulezJupiter Если мой ответ будет полезным, я буду очень признателен, если вы проголосуете за него и / или пометите его как правильный ответ. Спасибо.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню