首页 > 代码库 > 使用annotation配置hibernate(2):一对多关系配置
使用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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。