JPA中的manytomany

  • Post author:
  • Post category:其他


 概念说明

一个雇员(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

查看原文:

http://zccbbg.top/2017/01/26/jpa-manytomany/



版权声明:本文为qq_27575627原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。