• 使用annotation配置hibernate(2):一对多关系配置


    数据表结构

     

    单向一对多

    Student.java

     1 @Entity
     2 @Table(name = "student")
     3 public class Student {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator",strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @Column(name = "name")
    11     private String name;
    12     
    13     @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    14     @JoinColumn(name="grade_id")
    15     private Grade grade;
    16 }

    Grade.java

     1 @Entity
     2 @Table(name="grade")
     3 public class Grade {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator", strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @Column(name = "name")
    11     private String name;
    12 }

    单向多对一

    Student.java

    @Entity
    @Table(name = "student")
    public class Student {
        @Id
        @Column(name = "id")
        @GenericGenerator(name = "generator",strategy = "native")
        @GeneratedValue(generator = "generator")
        private int id;
        
        @Column(name = "name")
        private String name;
        
        @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
        @JoinColumn(name="grade_id")
        private Grade grade;
    }

      Grade.java

     1 @Entity
     2 @Table(name="grade")
     3 public class Grade {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator", strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @Column(name = "name")
    11     private String name;
    12 }

    双向关联

    Student.java

     1 @Entity
     2 @Table(name = "student")
     3 public class Student {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator",strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @Column(name = "name")
    11     private String name;
    12     
    13     @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    14     @JoinColumn(name="grade_id")
    15     private Grade grade;
    16 }

     Grade.java

     1 @Entity
     2 @Table(name="grade")
     3 public class Grade {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator", strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @Column(name = "name")
    11     private String name;
    12     
    13     @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="grade")
    14     private Set<Student> students = new HashSet<Student>(); 
    15 }

      

    自身一对多

    Category.java

     1 @Entity
     2 @Table(name = "category")
     3 public class Category {
     4     @Id
     5     @Column(name = "id")
     6     @GenericGenerator(name = "generator",strategy = "native")
     7     @GeneratedValue(generator = "generator")
     8     private int id;
     9     
    10     @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="category")
    11     private Set<Category> categorys = new HashSet<Category>();
    12     
    13     @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    14     @JoinColumn(name="father_category")
    15     private Category category;
    16 
    17 }

    关于mappedBy关键字的具体作用可以参考 http://xiaoruanjian.iteye.com/blog/1094253

  • 相关阅读:
    python 图片验证码降噪
    python 视频配音、剪辑
    Python实现音乐的剪辑
    OpenCV-Python 视频读取
    OpenCV-Python 人脸眼睛嘴识别
    OpenCV-Python 人脸识别
    numpy
    python学习笔记(3)---cookie & session
    python爬虫学习笔记(2)-----代理模式
    python爬虫学习笔记(1)
  • 原文地址:https://www.cnblogs.com/zanglitao/p/3833281.html
Copyright © 2020-2023  润新知