当前位置: 首页 > news >正文

第二百五十五节 JPA教程 - JPA 多对多连接表示例

JPA教程 - JPA 多对多连接表示例

以下代码显示如何为多对多映射设置连接表。

例子

下面的代码来自PersonDaoImpl.java。

package cn.w3cschool.common;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional
public class PersonDaoImpl {public void test(){Department d1 = new Department();d1.setName("Design");Department d2 = new Department();d2.setName("Testing");Person p1 = new Person("Tom");p1.getDepartments().add(d1);p1.getDepartments().add(d2);Person p2 = new Person("Jack");p2.getDepartments().add(d1);p2.getDepartments().add(d2);d1.getPersons().add(p1);d1.getPersons().add(p2);em.persist(p1);em.persist(p2);em.persist(d1);em.persist(d2);}@PersistenceContextprivate EntityManager em;
}

下面的代码来自Person.java。

package cn.w3cschool.common;
import java.util.HashSet;
import java.util.Set;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;@Entity
public class Person {@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private long id;private String name;@ManyToMany@JoinTable(name="PERSON_DEPT", joinColumns=@JoinColumn(name="PERSON_ID"),inverseJoinColumns=@JoinColumn(name="DEPT_ID"))private Set<Department> departments = new HashSet<Department>();public Person() {}public Person(String name) {this.name = name;}public Set<Department> getDepartments() {return departments;}public void setDepartments(Set<Department> departments) {this.departments = departments;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", departments="+ departments + "]";}}

下面的代码来自Department.java。

package cn.w3cschool.common;import java.util.HashSet;
import java.util.Set;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;@Entity
public class Department implements java.io.Serializable{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private long id;private String name;@ManyToManyprivate Set<Person> persons = new HashSet<Person>();public Set<Person> getPersons() {return persons;}public void setPersons(Set<Person> persons) {this.persons = persons;}public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Department [id=" + id + ", name=" + name + ", persons=" + persons+ "]";}}

以下是数据库转储。

Table Name: DEPARTMENTRow:Column Name: ID,Column Type: BIGINT:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: DesignRow:Column Name: ID,Column Type: BIGINT:Column Value: 2Column Name: NAME,Column Type: VARCHAR:Column Value: TestingTable Name: DEPARTMENT_PERSONRow:Column Name: DEPARTMENT_ID,Column Type: BIGINT:Column Value: 1Column Name: PERSONS_ID,Column Type: BIGINT:Column Value: 1Row:Column Name: DEPARTMENT_ID,Column Type: BIGINT:Column Value: 1Column Name: PERSONS_ID,Column Type: BIGINT:Column Value: 2Table Name: PERSONRow:Column Name: ID,Column Type: BIGINT:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: TomRow:Column Name: ID,Column Type: BIGINT:Column Value: 2Column Name: NAME,Column Type: VARCHAR:Column Value: JackTable Name: PERSON_DEPTRow:Column Name: PERSON_ID,Column Type: BIGINT:Column Value: 1Column Name: DEPT_ID,Column Type: BIGINT:Column Value: 1Row:Column Name: PERSON_ID,Column Type: BIGINT:Column Value: 1Column Name: DEPT_ID,Column Type: BIGINT:Column Value: 2Row:Column Name: PERSON_ID,Column Type: BIGINT:Column Value: 2Column Name: DEPT_ID,Column Type: BIGINT:Column Value: 1Row:Column Name: PERSON_ID,Column Type: BIGINT:Column Value: 2Column Name: DEPT_ID,Column Type: BIGINT:Column Value: 2


 


http://www.mrgr.cn/news/37390.html

相关文章:

  • 数学符号练习篇-函数
  • PostgreSQL 17 发布了!非常稳定的版本
  • 今年双十一不被割韭菜!要买就要高品质好物~总结五款好物推荐!
  • HCIP——HCIA回顾
  • 26 基于STM32的智能门禁系统(指纹、蓝牙、刷卡、OLED、电机)
  • 【JavaScript】encodeURI 和 decodeURI
  • 生成速度提升70%,32K版本上新,讯飞星火API全新升级!
  • 【通知】“长三角档案数字资源长期保存与数据安全治理”专题培训
  • 【黑马软件测试一、二】软件测试基础与Linux、数据库
  • 顶象滑块、顶象验证码就这?2024-09-27 最新版(持续更新)确定不点进来看看?
  • 2万字长文助你快速入门AIGC:包含底层原理、应用场景、热门工具、行业现状…
  • 详解JavaScript中属性getter和setter
  • JVM 类加载机制2
  • 阻塞信号(`blockSignals(true)`)的作用
  • c++----继承(初阶)
  • vue项目中的node、node-sass、sass-loader之间的版本关系
  • kubernetes调度2
  • 双十一有哪些数码家电值得入手?双十一五款必入手名单大曝光
  • 3.5k star 一款开源简单好用的前端TAG标签组建库
  • Oracle EBS中 成本管理 模块的财务流程概览