2017-12-13 2 views
0

Ich entwickle eine Webanwendung, die Spring Boot verwendet. Ich habe Datenbanktabellen wie folgt:Spring Data JPA-Anmerkungen für Viele-zu-Viele-Tabelle-Beziehung

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 

und die folgenden sind die Domain-Objektklassen:

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; 

Ich frage mich, was Anmerkungen ich in der Benutzer Klasse verwenden benötigt. Ich folge diesem tutorial. Aber das hat keine dritte Klasse, da die dritte Tabelle (book_publisher) keine anderen Felder als die Fremdschlüssel hat (book_id, publisher_id).

Vielen Dank.

Antwort

1

Sie benötigen eine zu viele Verknüpfung von Employee zu User, da Benutzer eine so genannte attributierte Zuordnung mit Attributen ist.

Die Benutzereinheit hat eine zusammengesetzte ID als Primärschlüssel.

Bitte einen ausgezeichneten Artikel über das Thema von Thorben Jansen finden: https://www.thoughts-on-java.org/many-relationships-additional-properties/

+0

Dank für die schnelle Antwort. Ich werde es mir ansehen. –

+0

@JulezJupiter Wenn meine Antwort hilfreich ist, würde ich es sehr zu schätzen wissen, wenn Sie es abstimmen und/oder als die richtige Antwort markieren. Vielen Dank. –

+0

Gerade herausgefunden, meine Referenz-Website hat auch ähnlich wie den Link, den Sie angegeben haben: https://hellokoding.com/jpa-many-to-many-extra-columns-relationship-mapping-example-with-spring-boot -maven-und-mysql / –