Sping Data Jpa 一对多单向映射
来源:互联网 发布:c语言data是什么意思 编辑:程序博客网 时间:2024/05/20 09:48
/**
* @author StormMaybin
* @date 2017-01-17
*/
生命不息,奋斗不止!
一对多映射关系
在JPA中,用@OneToMany来标识一对多的关系。实现一对多的单向关联,只需在代表一的实体(Company)中使用@OneToMany映射标注就可以了,代表多的实体不需要使用任何映射标注。
有两种方式实现一对多的单向关联。一种是在只使用@OneToMany来标识,这种方式是通过一张第三方表来保存关系。还有一种是使用@OneToMany和@JoinColumn来标注,这种方式是在多的一方(Employee)的表中增加一个外键列来保存关系。
OneToMany
Company.java
package com.stormma.model;import java.util.List;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;/** * Created by mayongbin01 on 2017/1/17. */@Entity@Table(name = "company")public class Company { //唯一标识公司 @Id @GeneratedValue private int id; //公司名字 private String name; @OneToMany(cascade = {CascadeType.ALL}) private List<Employee> employees; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
Employee.java
package com.stormma.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;/** * Created by mayongbin01 on 2017/1/17. */@Entity@Table(name = "employee")public class Employee { //唯一标识雇员 @Id @GeneratedValue private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
生成的表结构
CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;DROP TABLE IF EXISTS `company`;CREATE TABLE `company` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;DROP TABLE IF EXISTS `company_employees`;CREATE TABLE `company_employees` ( `company_id` int(11) NOT NULL, `employees_id` int(11) NOT NULL, UNIQUE KEY `UK_lg2r1rg13q18sa62l1y7un4or` (`employees_id`), KEY `FKd66w6jx84tydyd8sf9mpqh5je` (`company_id`), CONSTRAINT `FKd66w6jx84tydyd8sf9mpqh5je` FOREIGN KEY (`company_id`) REFERENCES `company` (`id`), CONSTRAINT `FKnntnqhhla66c4h9ddbnlvqk2x` FOREIGN KEY (`employees_id`) REFERENCES `employee` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
OneToMany+JoinColumn
Company.java
package com.stormma.model;import java.util.List;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;/** * Created by mayongbin01 on 2017/1/17. */@Entity@Table(name = "company")public class Company { //唯一标识公司 @Id @GeneratedValue private int id; //公司名字 private String name; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "company_id") private List<Employee> employees; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
Employee.java
package com.stormma.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;/** * Created by mayongbin01 on 2017/1/17. */@Entity@Table(name = "employee")public class Employee { //唯一标识雇员 @Id @GeneratedValue private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
结构
Hibernate: create table company (id integer not null auto_increment, name varchar(255), primary key (id))Hibernate: create table employee (id integer not null auto_increment, name varchar(255), company_id integer, primary key (id))Hibernate: alter table employee add constraint FK5v50ed2bjh60n1gc7ifuxmgf4 foreign key (company_id) references company (id)
2 0
- Sping Data Jpa 一对多单向映射
- JPA的一对多映射(单向)
- JPA映射关联关系-单向一对多
- JPA的一对多映射(单向)
- JPA学习笔记-映射单向一对多的关联关系
- JPA一对多单向关联
- 一对多单向关联映射
- JPA - 一对多自身映射
- JPA一对多映射案例
- jpa一对多映射案例
- jpa 一对多单向关联 插入问题
- JPA——单向一对多
- Hibernate单向一对多JPA注解
- JPA 菜鸟教程 4 单向一对多
- JPA关联映射 - 一对多映射
- Hibernate单向一对多映射和双向一对多映射
- 单向一对多映射和双向一对多映射
- Hibernate一对多单向关联映射
- java 利用XML形式导出word
- poj3083——Children of the Candy Corn(bfs)
- 深度卷积网络CNN与图像语义分割
- Java实现九大排序算法
- 解决mysql开启GTID主从同步出现1236错误问题
- Sping Data Jpa 一对多单向映射
- Java Web开发之关于登录的那点事
- Windows下安装solr4.2
- tigase安装之旅
- react native 实战系列教程之热更新原理分析与实现
- Java泛型中的PECS原则
- 吊炸天!74款APP完整源码!
- INSTALL_MOD_STRIP
- 任务延时、任务挂起、解除任务挂起、任务优先级获取和设置