zoukankan      html  css  js  c++  java
  • Hibernat之关系的处理多对多

    第一步:编写两个pojo,比如一个学生表一个课程表  这里使用注解。

    需要

    课程表:

     1 package com.qcf.pox;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 import javax.persistence.Entity;
     7 import javax.persistence.GeneratedValue;
     8 import javax.persistence.GenerationType;
     9 import javax.persistence.Id;
    10 import javax.persistence.ManyToMany;
    11 
    12 @Entity
    13 public class Course {
    14     @Id
    15     @GeneratedValue(strategy=GenerationType.AUTO)
    16     private int id;
    17     private String name;
    18     @ManyToMany(mappedBy="courses")
    19     private Set<Student2> student2s=new HashSet<Student2>();
    20     public int getId() {
    21         return id;
    22     }
    23     public void setId(int id) {
    24         this.id = id;
    25     }
    26     public String getName() {
    27         return name;
    28     }
    29     public void setName(String name) {
    30         this.name = name;
    31     }
    32     public Set<Student2> getStudent2s() {
    33         return student2s;
    34     }
    35     public void setStudent2s(Set<Student2> student2s) {
    36         this.student2s = student2s;
    37     }
    38     public Course(int id, String name, Set<Student2> student2s) {
    39         super();
    40         this.id = id;
    41         this.name = name;
    42         this.student2s = student2s;
    43     }
    44     public Course() {
    45         super();
    46     }
    47     
    48 }
    View Code

    学生表:

     1 package com.qcf.pox;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 import javax.persistence.CascadeType;
     7 import javax.persistence.Entity;
     8 import javax.persistence.GeneratedValue;
     9 import javax.persistence.GenerationType;
    10 import javax.persistence.Id;
    11 import javax.persistence.ManyToMany;
    12 
    13 @Entity
    14 public class Student2 {
    15     @Id
    16     @GeneratedValue(strategy=GenerationType.AUTO)
    17     private int id;
    18     private String name;
    19     @ManyToMany(cascade=CascadeType.ALL)
    20     private Set<Course> courses=new HashSet<Course>();
    21     public int getId() {
    22         return id;
    23     }
    24     public void setId(int id) {
    25         this.id = id;
    26     }
    27     public String getName() {
    28         return name;
    29     }
    30     public void setName(String name) {
    31         this.name = name;
    32     }
    33     public Set<Course> getCourses() {
    34         return courses;
    35     }
    36     public void addCourses(Course courses) {
    37         this.courses.add(courses);
    38     }
    39     public Student2(int id, String name, Set<Course> courses) {
    40         super();
    41         this.id = id;
    42         this.name = name;
    43         this.courses = courses;
    44     }
    45     public Student2() {
    46         super();
    47     }
    48     
    49 }
    View Code

    第二步:在hibernate.cfg.xml文件中引入这两个po类

    1         <mapping class="com.qcf.pox.Student2"/>
    2         <mapping class="com.qcf.pox.Course"/>
    View Code

    第三步:编写测试代码

     1 package com.qcf.test;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.SessionFactory;
     5 import org.hibernate.Transaction;
     6 import org.hibernate.cfg.AnnotationConfiguration;
     7 import org.hibernate.cfg.Configuration;
     8 
     9 import com.qcf.pox.Course;
    10 import com.qcf.pox.Student2;
    11 
    12 public class TestManyToMany {
    13     public static void main(String[] args) {
    14         Configuration configuration=new AnnotationConfiguration().configure();
    15         SessionFactory factory=configuration.buildSessionFactory();
    16         Session session=factory.openSession();
    17         Transaction transaction=session.beginTransaction();
    18         
    19         //创建两个课程
    20         Course course=new Course();
    21         course.setName("java");
    22         Course course2=new Course();
    23         course2.setName("C#");
    24         
    25         //创建两个学生
    26         Student2 student=new Student2();
    27         student.setName("zhangsan");
    28         Student2 student2=new Student2();
    29         student2.setName("lisi");
    30         
    31         student.addCourses(course);
    32         student.addCourses(course2);
    33         
    34         student2.addCourses(course);
    35         student2.addCourses(course2);
    36         
    37         session.save(student);
    38         session.save(student2);
    39         
    40         transaction.commit();
    41         session.close();
    42         
    43     }
    44 
    45 }
    View Code


    执行成功后的结果:

  • 相关阅读:
    re模块的split(),sub()方法 新发现
    tf.where()&np.random.RandomState.rand()&np.vstack&np.mgrid .ravel np.c_[]
    Embedding实现1pre1
    tf.keras训练iris数据集
    tf.keras 搭建神经网络六部法
    循环计算过程(4pre1)
    池化(pooling)舍弃(dropout)& 卷积神经网络
    [C]gcc编译器的一些常用语法
    [POSIX]文件系统(概述)
    [Linux]PHP-FPM与NGINX的两种通讯方式
  • 原文地址:https://www.cnblogs.com/quchengfeng/p/4111344.html
Copyright © 2011-2022 走看看