针对多对多表关系的Spring Data JPA注释

时间:2017-12-13 13:36:50

标签: mysql hibernate jpa spring-boot spring-data-jpa

我正在使用Spring Boot开发Web应用程序。我有如下数据库表:

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;

我想知道我需要在用户类中使用哪些注释。我跟着这个tutorial。但由于第三个表( book_publisher )没有外键以外的字段( book_id publisher_id ),因此没有第三类。

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要从员工到用户之间的多对多关联,因为用户是属性的所谓归属关联。

用户实体将具有复合ID作为主键。

请从Thorben Jansen找到一篇关于该主题的优秀文章: https://www.thoughts-on-java.org/many-relationships-additional-properties/