`

OneToMany 中间表关联

阅读更多

Class

@Entity
public class Class {
	@Id
	@GeneratedValue
	@Column(name = "class_id")
	private int id;
	private String className;
	@OneToMany(mappedBy = "myclass", cascade = CascadeType.ALL)
	private Set<Student> students = new HashSet<Student>();

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

	public Set<Student> getStudents() {
		return students;
	}

	public void setStudents(Set<Student> students) {
		this.students = students;
	}
}

 Student

@Entity
public class Student {
	@Id
	@GeneratedValue
	@Column(name = "student_id")
	private int id;
	private String studentName;
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinTable(name = "student_class", joinColumns = @JoinColumn(name = "student_id"), inverseJoinColumns = @JoinColumn(name = "class_id"))
	private Class myclass;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getStudentName() {
		return studentName;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}

	public Class getMyclass() {
		return myclass;
	}

	public void setMyclass(Class myclass) {
		this.myclass = myclass;
	}
}

 test

@Test
	public void testOneToManyJoinTable() {
		session.beginTransaction();
		OneToMany.joinTable.Class c = new OneToMany.joinTable.Class();
		c.setClassName("classNmae");

		OneToMany.joinTable.Student s1 = new OneToMany.joinTable.Student();
		OneToMany.joinTable.Student s2 = new OneToMany.joinTable.Student();
		OneToMany.joinTable.Student s3 = new OneToMany.joinTable.Student();

		s1.setStudentName("s1");
		s2.setStudentName("s1");
		s3.setStudentName("s1");

		c.getStudents().add(s3);
		c.getStudents().add(s2);
		c.getStudents().add(s1);
		s3.setMyclass(c);
		s2.setMyclass(c);
		s1.setMyclass(c);

		session.save(c);

		session.getTransaction().commit();
	}

 

分享到:
评论

相关推荐

    Hibernate多表关联配置及错误解决方法

    在Java开发中,Hibernate是一个流行的ORM(Object-...4. 对于多对多关联,需要使用`@JoinTable`定义中间表。 5. 检查类型匹配,确保数据库字段类型与Java类型对应。 6. 如果遇到错误,检查配置是否完整,注解是否正确。

    hibernate表关联实例

    在数据库中,多对多关联比较复杂,因为需要一个中间表来存储两个实体的关联。在Hibernate中,可以使用`@ManyToMany`注解和`@JoinTable`来处理。例如,学生和课程之间的关联: ```java @Entity public class Student...

    hibernate的表关联操作-hibernate02

    4. **多对多关联**:多对多关联较为复杂,通常需要一个中间表来存储两个实体类的关联关系。在Hibernate中,可以使用`@ManyToMany`注解,并通过`@JoinTable`指定中间表。 ```java @Entity public class Course { @...

    hibernate之关于关联映射的综合应用

    本篇文章将探讨如何在Hibernate中处理关联映射,包括处理业务逻辑、指定中间表、级联操作以及解决建表过程中的主键错乱问题。 1. **关联映射处理业务逻辑** 在Hibernate中,关联映射主要有以下几种类型:一对一...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    在这个例子中,我们创建了一个中间表user_course来存储用户和课程的关联关系。@JoinTable注解定义了中间表及其连接列,而mappedBy属性表明Course实体是关系的拥有者。 以上就是关于Hibernate对象三状态以及OneToOne...

    Android数据库框架-----ORMLite关联表的使用

    本篇文章将深入探讨ORMLite如何在Android上实现关联表的使用。 首先,了解ORMLite的基本概念。ORMLite的核心在于它可以自动将Java对象映射到数据库表,这被称为对象关系映射(ORM)。通过在Java类上使用特定的注解...

    hibernate表之间3种双向关联映射

    在Hibernate中,这种关联通常通过中间表实现。双向意味着两个实体类都可以直接访问彼此的集合属性。配置时,我们需要在双方实体类中添加`@ManyToMany`注解,并通过`mappedBy`属性指定对方的集合属性名。 接着是双向...

    hibernate多对多双向关联

    这通常包括配置实体类、定义关联映射、使用中间表以及进行增删改查操作。在实际开发中,理解和掌握这种关联类型对于处理复杂的数据交互至关重要。 **标签解析:** - **源码**:暗示内容可能包含具体的代码示例,...

    hibernate关联关系总结

    本篇将深入探讨Hibernate的四种主要关联关系:一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany),并结合实例来阐述每种关系的配置和使用。 1. **一对一关联(OneToOne)** 一...

    hibernate 关联例子

    通常需要一个中间表来存储两个实体的关联关系。例如: ```java @Entity public class Course { @ManyToMany @JoinTable(name = "course_students", joinColumns = @JoinColumn(name = "course_id"), ...

    hibernate各种常用关联关系的基本配置

    配置时使用`@ManyToMany`,并可通过`@JoinTable`定义中间表。 ```java @Entity public class User { @ManyToMany @JoinTable( name = "user_role", joinColumns = @JoinColumn(name = "user_id"), ...

    基于注解的关联关系Hibernate

    - 通常,多对多关联需要一个中间表来存储两个实体的连接信息,`@JoinTable`注解用于定义这个中间表,包括其名称、连接两个实体的列名等。 - 如果需要,`@OrderBy`可以用来定义中间表中元素的排序。 在实际应用中...

    Hibernate关联关系总结

    这种关联可以通过`@ManyToMany`注解实现,通常需要一个中间表(也称为连接表)来存储两个实体的关联信息。`@JoinTable`注解用于定义这个中间表,包括表名、联合主键等信息。`@ManyToMany`的`mappedBy`属性用于指定...

    mybatis关联映射源码

    MyBatis处理多对多关系时,通常需要一个中间表来存储两个实体的关联。`&lt;association&gt;`和`&lt;collection&gt;`标签结合使用,同时还需要定义一个`&lt;mapping&gt;`标签来指定中间表的信息。在`chapter10_ManyToMany`文件中,你...

    Hibernate实体关联速查表

    通常需要一个中间表来存储两个实体的关联关系。使用`@ManyToMany`和`@JoinTable`注解定义: ```java @Entity public class User { @ManyToMany @JoinTable(name = "user_role", joinColumns = @JoinColumn(name ...

    JPA实体关联(hibernate实现)

    通常还需要一个中间表来存储两个实体的关联信息,这可以通过`@JoinTable`注解来配置,包括表名、连接列等。此外,可以使用`@OrderColumn`来指定中间表中关联实体的排序。 3. **一对一关联(JPAOneToOne)** 一对一...

    JPA关联关系

    JPA通过中间表(也称为连接表)来处理这种关系,使用@ManyToMany注解,并通过@JoinTable定义连接表的详细信息,包括连接字段和外键引用。 **源码分析** 理解了JPA关联关系的理论后,深入源码可以帮助我们更好地掌握...

    hibernate组件之间的关联

    在数据库中,这通常通过中间表(关联表)来实现。在 Hibernate 中,使用 @ManyToMany 注解,可以指定中间表的字段和关系。@JoinTable 注解用于定义中间表的详细信息,包括表名、连接列等。 **级联操作(Cascading)...

    hibernate关联映射实例

    通常会创建一个中间表来存储两个实体的关联,这个中间表可以通过`@JoinTable`来定义。`mappedBy`属性则可以用来指定关联的反向引用。 3. **继承映射**: Hibernate支持类的继承映射,这使得对象模型可以更好地反映...

    JPA课程manyToMany OneToMany 等全部测试

    在这个例子中,`Student`和`Course`类分别表示学生和课程,它们通过`@ManyToMany`建立关联,并通过`@JoinTable`定义了中间表`student_course`。 ### `@OneToMany`关系 `@OneToMany`注解表示一个实体可以与另一个...

Global site tag (gtag.js) - Google Analytics