博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JPA#OneToMany
阅读量:5101 次
发布时间:2019-06-13

本文共 1451 字,大约阅读时间需要 4 分钟。

一对多,反过来就是,多对一。在进行一对多的映射中,往往也要处理多对一。


 

涉及到的注解(注解的使用看代码注释):

  • OneToMany
  • ManyToOne
  • JsonIgnoreProPerties

 

举个例子:

一个教室有多个同学,多个同学在一个教室上课。

 

@Entity@Table(name = "t_student")public class Student {	@Id	@GeneratedValue(strategy = GenerationType.IDENTITY)	@Column(name = "id")	private Integer id;	@Column(name = "name")	private String name;	/**	 * Student 和 Classroom是多对一的关系所以用到了ManyToOne注解。	 * 	 * 因此每一个Student实例也都有一个classroom实例,	 * 所以student对应的数据库表个也就需要一个外键来关联classroom实例(通过JoinColumn.name),	 * 同时通过JoinColumn.referencedColumnName来指出外键对应的主键名称。	 * 	 */	@ManyToOne	@JoinColumn(name="classroom_id",referencedColumnName="id")	@JsonIgnoreProperties(value="students")	private Classroom classroom;		@Override	public String toString() {		return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);	}}

  

@Entity@Table(name = "t_classroom")public class Classroom {	@Id	@GeneratedValue(strategy = GenerationType.IDENTITY)	@Column(name = "id")	private Integer id;	@Column(name = "name")	private String name;	/**	 * 一个教室里面有多个学生,因此用到了OneToMany注解,所以Classroom实体类中就有了一个学生的集合属性。	 * 集合就是多个值组成的属性,因此通过JoinColumn来定义一个外键的方式就行不通了。	 * 	 * 这里通过OneToMany.mappedBy来指出集合(students)中每一个元素(student)的classroom属性,通过classroom属性	 * 来连接(或称为映射)一个教室和多个学生之间的关系。	 * 	 * 通过JsonIgnoreProperties注解避免出现序列化时候的死循环	 */	@OneToMany(mappedBy="classroom")	@JsonIgnoreProperties(value="classroom")	private List
students;}

  

 

 

_

 

转载于:https://www.cnblogs.com/luohaonan/p/11244773.html

你可能感兴趣的文章
java web实现文件下载的注意事项
查看>>
SQL数据库
查看>>
ORA-32004: obsolete and/or deprecated parameter(s) specified
查看>>
安装中文输入法
查看>>
glassfish 自定义 jaas realm
查看>>
Glassfish 设置时区
查看>>
th:each
查看>>
补码与C++的应用
查看>>
PDO 代码
查看>>
Md5加密
查看>>
开源项目objective-zip
查看>>
最大似然估计
查看>>
Egret中的三种单例写法
查看>>
Java开发团队管理细则
查看>>
数列之和
查看>>
struts2与spring整合问题,访问struts2链接时,spring会负责创建Action
查看>>
CentOS 6.8 编译安装MySQL5.5.32
查看>>
STL 算法罗列 (转)
查看>>
Linux下Hadoop分布式系统配置
查看>>
Kafka的配置文件详细描述
查看>>