JPA#OneToMany
一对多,反过来就是,多对一。在进行一对多的映射中,往往也要处理多对一。
涉及到的注解(注解的使用看代码注释):
- 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;@Overridepublic 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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
