概念说明
一个雇员(employee)可以有多个项目(project),一个项目也可以都有个雇员。这种关系就是多对多的关系,需要建立中间表(emp_proj)来维护两张表的关联关系。 EMPLOYEE (table)
ID | FIRSTNAME | LASTNAME |
1 | Bob | Way |
2 | Sarah | Smith |
EMP_PROJ (table)
EMP_ID | PROJ_ID |
1 | 1 |
1 | 2 |
2 | 1 |
PROJECT (table)
ID | NAME |
1 | GIS |
2 | SIG |
JPA中的设置
@Entity public class Employee { @Id @Column(name="ID") private long id; ... @ManyToMany @JoinTable( name="EMP_PROJ", joinColumns=@JoinColumn(name="EMP_ID", referencedColumnName="ID"), inverseJoinColumns=@JoinColumn(name="PROJ_ID", referencedColumnName="ID")) private List<Project> projects; ..... }
由于ManyToMany是新建一张关系表,所以注解是JoinTable。joinColumns关联起Employee类与关联表,而inverseJoinColumns则关联起引用类project与关联表的关系。
如果想在Project类里面也维护与Employee的关系,则只需要设置mappedBy即可。具体如下:
@Entity public class Project { @Id @Column(name="ID") private long id; ... @ManyToMany(mappedBy="projects") private List<Employee> employees; ... }
本文参考:https://en.wikibooks.org/wiki/Java_Persistence/ManyToMany
欢迎关注橙子博客微信公众号:chengziboke888
版权声明:本文为qq_27575627原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。