- packagecom.entity;
- importjava.io.Serializable;
- importjava.util.HashSet;
- importjava.util.Set;
- importjavax.persistence.Column;
- importjavax.persistence.Entity;
- importjavax.persistence.GeneratedValue;
- importjavax.persistence.Id;
- importjavax.persistence.ManyToMany;
- importjavax.persistence.Table;
- @Entity
- @Table(name="Student")
- publicclassStudentimplementsSerializable{
- privateIntegerstudentid;//学生ID
- privateStringstudentName;//学生姓名
- privateSet<Teacher>teachers=newHashSet<Teacher>();//对应的教师集合
- publicStudent(){
- }
- publicStudent(StringstudentName){
- this.studentName=studentName;
- }
- @Id
- @GeneratedValue
- publicIntegergetStudentid(){
- returnstudentid;
- }
- publicvoidsetStudentid(Integerstudentid){
- this.studentid=studentid;
- }
- @Column(nullable=false,length=32)
- publicStringgetStudentName(){
- returnstudentName;
- }
- publicvoidsetStudentName(StringstudentName){
- this.studentName=studentName;
- }
- /*
- *@ManyToMany注释表示Student是多对多关系的一边,mappedBy属性定义了Student为双向关系的维护端
- */
- @ManyToMany(mappedBy="students")
- publicSet<Teacher>getTeachers(){
- returnteachers;
- }
- publicvoidsetTeachers(Set<Teacher>teachers){
- this.teachers=teachers;
- }
- }
Teacher.java
- packagecom.entity;
- importjava.io.Serializable;
- importjava.util.HashSet;
- importjava.util.Set;
- importjavax.persistence.CascadeType;
- importjavax.persistence.Column;
- importjavax.persistence.Entity;
- importjavax.persistence.FetchType;
- importjavax.persistence.GeneratedValue;
- importjavax.persistence.Id;
- importjavax.persistence.JoinTable;
- importjavax.persistence.ManyToMany;
- importjavax.persistence.Table;
- importjavax.persistence.JoinColumn;
- @Entity
- @Table
- publicclassTeacherimplementsSerializable{
- privateIntegerteacherid;//教师ID
- privateStringteacherName;//教师姓名
- privateSet<Student>students=newHashSet<Student>();//对应的学生集合
- publicTeacher(){
- }
- publicTeacher(StringteacherName){
- this.teacherName=teacherName;
- }
- @Id
- @GeneratedValue
- publicIntegergetTeacherid(){
- returnteacherid;
- }
- publicvoidsetTeacherid(Integerteacherid){
- this.teacherid=teacherid;
- }
- @Column(nullable=false,length=32)
- publicStringgetTeacherName(){
- returnteacherName;
- }
- publicvoidsetTeacherName(StringteacherName){
- this.teacherName=teacherName;
- }
- /*
- *@ManyToMany注释表示Teacher是多对多关系的一端。
- *@JoinTable描述了多对多关系的数据表关系,name属性指定中间表名称。
- *joinColumns定义中间表与Teacher表的外键关系,中间表Teacher_Student的Teacher_ID列是Teacher表的主键列对应的外键列。
- *inverseJoinColumns属性定义了中间表与另外一端(Student)的外键关系。
- */
- @ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
- @JoinTable(name="Teacher_Student",
- joinColumns={@JoinColumn(name="teacher_ID",referencedColumnName="teacherid")},
- inverseJoinColumns={@JoinColumn(name="student_ID",referencedColumnName="studentid")
- })
- publicSet<Student>getStudents(){
- returnstudents;
- }
- publicvoidsetStudents(Set<Student>students){
- this.students=students;
- }
- publicvoidaddStudent(Studentstudent){
- if(!this.students.contains(student)){//检测在该散列表中某些键是否映射到指定值,value查找的值。如果某些键映射到该散列表中的值为true,否则false
- this.students.add(student);
- }
- }
- publicvoidremoveStudent(Studentstudent){
- this.students.remove(student);
- }
- }
转自:http://lym6520.iteye.com/blog/314065
相关推荐
在Java的持久化框架Hibernate中,`@ManyToMany`注解是用于处理数据库中的多对多(Many-to-Many)关系。多对多关系是指一个实体可以与多个其他实体相关联,反之亦然。这种关系在数据库表设计中通常通过中间表来实现,...
在`User`实体中,我们使用`@ManyToMany`注解来声明多对多关联,并通过`@JoinTable`注解指定中间表`user_roles`,以及两个实体在中间表中的对应列。 2. 定义`Role`实体: ```java @Entity public class Role { ...
在Java对象模型中,ManyToMany关系表示两个实体之间存在多对多的关系。例如,一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在JPA中,这种关系通常通过一个中间表来实现,该表包含两个外键,分别指向...
本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,允许一个实体实例对应多个其他实体实例,反之亦然。本例子将深入探讨如何在Hibernate中设置并管理多对多关系。 首先,我们...
在Spring Boot和Spring Data的框架下,`ManyToMany`关系是一种常见的数据库模型,用于表示两个实体之间多对多的关系。这种关系意味着一个实体可以与多个其他实体相关联,反之亦然。例如,用户和角色之间的关系,一个...
在Java持久化框架Hibernate中,ManyToMany关系是一种重要的关联类型,它表示两个实体类之间可能存在多个实例互相关联的情况。例如,一个学生可以选修多门课程,一门课程也可以被多个学生选修,这就是典型的...
在数据库设计中,`ManyToMany`关系表示两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而课程也可以被多个学生选修。在JPA中,我们可以使用`@ManyToMany`注解来定义这种关系。这个注解通常需要配合`@...
在上面的例子中,`@ManyToMany`注解表明了两个实体间的多对多关系,`mappedBy`属性用于指定反向关联的属性名,`@JoinTable`则定义了中间表的详细信息,包括表名、外键列名等。 如果选择使用XML配置文件,你需要在两...
本篇我们将深入探讨JPA中的多对多双向关联,即`@ManyToMany`关系。 在关系数据库中,多对多关联是最复杂的一种关系类型,它可以表示两个实体之间无序的、可重复的关系。例如,一个学生可以选修多门课程,一门课程也...
Spring JPA 中的 ManyToMany 关系是一种复杂的关系,它允许一个实体与多个其他实体发生关系。在本文中,我们将详细介绍 Spring JPA ManyToMany 关系的原理及用法。 首先,JPA 中所有的关系都是单向的,这意味着关系...
在这个例子中,`Student`实体与`Course`实体之间存在多对多关系,`@ManyToMany`注解定义了这个关联。`mappedBy`属性用于指定反向关联的属性名,而`@JoinTable`则定义了中间表的详细信息。 **二、中间表的自动创建**...
在Java Persistence API (JPA) 中,多对多(ManyToMany)关系是表示两个实体之间复杂关联的一种方式。这种关联允许一个实体实例可以与多个其他实体实例相关联,反之亦然。例如,一个学生可以选修多门课程,一门课程...
在上面的例子中,Course和Student实体通过`@ManyToMany`注解建立了多对多关系,中间表`course_students`由`@JoinTable`定义,`joinColumns`和`inverseJoinColumns`分别表示Course和Student的外键。 对于**源码解析*...
在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。本篇将深入探讨Hibernate如何处理这种复杂的数据关联。 一、多对多关系...
在Java世界中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务...在实际编程时,注意合理设计实体关系,确保数据的一致性和完整性,同时利用Hibernate的便捷性提高开发效率。
当删除一个实体时,如果设置了级联策略,那么与之关联的其他实体也可能被删除。因此,在实际开发中要谨慎处理级联操作,避免数据丢失。 此外,多对多关联还涉及到关联的懒加载和急加载策略。默认情况下,Hibernate...
在Spring Data JPA中,多对多关联是数据库表间关系的一种常见表示,它允许一个实体实例与多个其他实体实例相互关联。在这个“jpa-day3-manytomany.zip”压缩包中,我们很可能会找到一个关于如何在Spring Data JPA中...
这种关系中,一个实体可以有多个其他实体与之关联,但被关联的实体并不知道这个关系。通过`@OneToMany`注解来表示,可使用`mappedBy`属性定义关联的集合属性。 4. **双向一对多**: 双向一对多关系中,一方实体...