zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    C语言(1)
    ​ Markdown
    多功能嵌入式解码软件(4)
    多功能嵌入式解码软件(3)
    多功能嵌入式解码软件(2)
    STM32最小系统设计
    C#通过字符串分割字符串Split
    基于串口的SD_card系统
    直流无刷电机工作原理
    Java常用函数式接口--Consumer接口使用案例
  • 原文地址:https://www.cnblogs.com/zanglitao/p/3833281.html
Copyright © 2011-2022 走看看