Я разрабатываю веб-приложение, используя 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).
Спасибо.
Вам понадобится много ассоциаций от Employee to User, потому что User является так называемой атрибутивной связью с атрибутами.
Пользовательский объект будет иметь составной идентификатор в качестве первичного ключа.
Пожалуйста, найдите отличную статью по этой теме из Thorben Jansen: https://www.thoughts-on-java.org/many-relationships-additional-properties/