`

实体关系之@ManyToMany

阅读更多
  1. packagecom.entity;
  2. importjava.io.Serializable;
  3. importjava.util.HashSet;
  4. importjava.util.Set;
  5. importjavax.persistence.Column;
  6. importjavax.persistence.Entity;
  7. importjavax.persistence.GeneratedValue;
  8. importjavax.persistence.Id;
  9. importjavax.persistence.ManyToMany;
  10. importjavax.persistence.Table;
  11. @Entity
  12. @Table(name="Student")
  13. publicclassStudentimplementsSerializable{
  14. privateIntegerstudentid;//学生ID
  15. privateStringstudentName;//学生姓名
  16. privateSet<Teacher>teachers=newHashSet<Teacher>();//对应的教师集合
  17. publicStudent(){
  18. }
  19. publicStudent(StringstudentName){
  20. this.studentName=studentName;
  21. }
  22. @Id
  23. @GeneratedValue
  24. publicIntegergetStudentid(){
  25. returnstudentid;
  26. }
  27. publicvoidsetStudentid(Integerstudentid){
  28. this.studentid=studentid;
  29. }
  30. @Column(nullable=false,length=32)
  31. publicStringgetStudentName(){
  32. returnstudentName;
  33. }
  34. publicvoidsetStudentName(StringstudentName){
  35. this.studentName=studentName;
  36. }
  37. /*
  38. *@ManyToMany注释表示Student是多对多关系的一边,mappedBy属性定义了Student为双向关系的维护端
  39. */
  40. @ManyToMany(mappedBy="students")
  41. publicSet<Teacher>getTeachers(){
  42. returnteachers;
  43. }
  44. publicvoidsetTeachers(Set<Teacher>teachers){
  45. this.teachers=teachers;
  46. }
  47. }



Teacher.java

Java代码收藏代码
  1. packagecom.entity;
  2. importjava.io.Serializable;
  3. importjava.util.HashSet;
  4. importjava.util.Set;
  5. importjavax.persistence.CascadeType;
  6. importjavax.persistence.Column;
  7. importjavax.persistence.Entity;
  8. importjavax.persistence.FetchType;
  9. importjavax.persistence.GeneratedValue;
  10. importjavax.persistence.Id;
  11. importjavax.persistence.JoinTable;
  12. importjavax.persistence.ManyToMany;
  13. importjavax.persistence.Table;
  14. importjavax.persistence.JoinColumn;
  15. @Entity
  16. @Table
  17. publicclassTeacherimplementsSerializable{
  18. privateIntegerteacherid;//教师ID
  19. privateStringteacherName;//教师姓名
  20. privateSet<Student>students=newHashSet<Student>();//对应的学生集合
  21. publicTeacher(){
  22. }
  23. publicTeacher(StringteacherName){
  24. this.teacherName=teacherName;
  25. }
  26. @Id
  27. @GeneratedValue
  28. publicIntegergetTeacherid(){
  29. returnteacherid;
  30. }
  31. publicvoidsetTeacherid(Integerteacherid){
  32. this.teacherid=teacherid;
  33. }
  34. @Column(nullable=false,length=32)
  35. publicStringgetTeacherName(){
  36. returnteacherName;
  37. }
  38. publicvoidsetTeacherName(StringteacherName){
  39. this.teacherName=teacherName;
  40. }
  41. /*
  42. *@ManyToMany注释表示Teacher是多对多关系的一端。
  43. *@JoinTable描述了多对多关系的数据表关系,name属性指定中间表名称。
  44. *joinColumns定义中间表与Teacher表的外键关系,中间表Teacher_Student的Teacher_ID列是Teacher表的主键列对应的外键列。
  45. *inverseJoinColumns属性定义了中间表与另外一端(Student)的外键关系。
  46. */
  47. @ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
  48. @JoinTable(name="Teacher_Student",
  49. joinColumns={@JoinColumn(name="teacher_ID",referencedColumnName="teacherid")},
  50. inverseJoinColumns={@JoinColumn(name="student_ID",referencedColumnName="studentid")
  51. })
  52. publicSet<Student>getStudents(){
  53. returnstudents;
  54. }
  55. publicvoidsetStudents(Set<Student>students){
  56. this.students=students;
  57. }
  58. publicvoidaddStudent(Studentstudent){
  59. if(!this.students.contains(student)){//检测在该散列表中某些键是否映射到指定值,value查找的值。如果某些键映射到该散列表中的值为true,否则false
  60. this.students.add(student);
  61. }
  62. }
  63. publicvoidremoveStudent(Studentstudent){
  64. this.students.remove(student);
  65. }
  66. }
转自:http://lym6520.iteye.com/blog/314065
分享到:
评论

相关推荐

    manytomany注解模式.rar

    在Java的持久化框架Hibernate中,`@ManyToMany`注解是用于处理数据库中的多对多(Many-to-Many)关系。多对多关系是指一个实体可以与多个其他实体相关联,反之亦然。这种关系在数据库表设计中通常通过中间表来实现,...

    hibernate5_ManyToMany多对多单向维护

    在`User`实体中,我们使用`@ManyToMany`注解来声明多对多关联,并通过`@JoinTable`注解指定中间表`user_roles`,以及两个实体在中间表中的对应列。 2. 定义`Role`实体: ```java @Entity public class Role { ...

    springboot 1.5.2 jpa ManyToMany Demo

    在Java对象模型中,ManyToMany关系表示两个实体之间存在多对多的关系。例如,一个学生可以选修多门课程,而一门课程也可以被多个学生选修。在JPA中,这种关系通常通过一个中间表来实现,该表包含两个外键,分别指向...

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

    本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...

    hibernate中manytomany的例子

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,允许一个实体实例对应多个其他实体实例,反之亦然。本例子将深入探讨如何在Hibernate中设置并管理多对多关系。 首先,我们...

    SpringBoot-SpringData-ManyToMany

    在Spring Boot和Spring Data的框架下,`ManyToMany`关系是一种常见的数据库模型,用于表示两个实体之间多对多的关系。这种关系意味着一个实体可以与多个其他实体相关联,反之亦然。例如,用户和角色之间的关系,一个...

    manytomany关系

    在Java持久化框架Hibernate中,ManyToMany关系是一种重要的关联类型,它表示两个实体类之间可能存在多个实例互相关联的情况。例如,一个学生可以选修多门课程,一门课程也可以被多个学生选修,这就是典型的...

    JPA课程manyToMany OneToMany 等全部测试

    在数据库设计中,`ManyToMany`关系表示两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而课程也可以被多个学生选修。在JPA中,我们可以使用`@ManyToMany`注解来定义这种关系。这个注解通常需要配合`@...

    Hibernate多对多双向关联(annotation/xml)

    在上面的例子中,`@ManyToMany`注解表明了两个实体间的多对多关系,`mappedBy`属性用于指定反向关联的属性名,`@JoinTable`则定义了中间表的详细信息,包括表名、外键列名等。 如果选择使用XML配置文件,你需要在两...

    JPA学习总结(四)--JPAManyToMany双向关联

    本篇我们将深入探讨JPA中的多对多双向关联,即`@ManyToMany`关系。 在关系数据库中,多对多关联是最复杂的一种关系类型,它可以表示两个实体之间无序的、可重复的关系。例如,一个学生可以选修多门课程,一门课程也...

    spring jpa ManyToMany原理及用法详解

    Spring JPA 中的 ManyToMany 关系是一种复杂的关系,它允许一个实体与多个其他实体发生关系。在本文中,我们将详细介绍 Spring JPA ManyToMany 关系的原理及用法。 首先,JPA 中所有的关系都是单向的,这意味着关系...

    HIbernate-ManytoMany:HIbernate-ManytoMany 不同实体之间的关系

    在这个例子中,`Student`实体与`Course`实体之间存在多对多关系,`@ManyToMany`注解定义了这个关联。`mappedBy`属性用于指定反向关联的属性名,而`@JoinTable`则定义了中间表的详细信息。 **二、中间表的自动创建**...

    JPA中的多对多双向关联实体定义与注解设置

    在Java Persistence API (JPA) 中,多对多(ManyToMany)关系是表示两个实体之间复杂关联的一种方式。这种关联允许一个实体实例可以与多个其他实体实例相关联,反之亦然。例如,一个学生可以选修多门课程,一门课程...

    hibernate 一对一 多对多的关系

    在上面的例子中,Course和Student实体通过`@ManyToMany`注解建立了多对多关系,中间表`course_students`由`@JoinTable`定义,`joinColumns`和`inverseJoinColumns`分别表示Course和Student的外键。 对于**源码解析*...

    Hibernate Many-To-Many Mapping Annotations

    在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...

    hibernate 多对多源代码

    在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。本篇将深入探讨Hibernate如何处理这种复杂的数据关联。 一、多对多关系...

    hibernate 映射关系学习入门 多对多实体映射

    在Java世界中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务...在实际编程时,注意合理设计实体关系,确保数据的一致性和完整性,同时利用Hibernate的便捷性提高开发效率。

    Hibenrate之多对多关联

    当删除一个实体时,如果设置了级联策略,那么与之关联的其他实体也可能被删除。因此,在实际开发中要谨慎处理级联操作,避免数据丢失。 此外,多对多关联还涉及到关联的懒加载和急加载策略。默认情况下,Hibernate...

    jpa-day3-manytomany.zip

    在Spring Data JPA中,多对多关联是数据库表间关系的一种常见表示,它允许一个实体实例与多个其他实体实例相互关联。在这个“jpa-day3-manytomany.zip”压缩包中,我们很可能会找到一个关于如何在Spring Data JPA中...

    jpa的实体映射关系7种

    这种关系中,一个实体可以有多个其他实体与之关联,但被关联的实体并不知道这个关系。通过`@OneToMany`注解来表示,可使用`mappedBy`属性定义关联的集合属性。 4. **双向一对多**: 双向一对多关系中,一方实体...

Global site tag (gtag.js) - Google Analytics