hibernate——onetomany(单向)
2016-06-26 13:44
295 查看
hibernate——onetomany(单向)
package com.xueyoucto.xueyou; import org.hibernate.annotations.*; import org.hibernate.annotations.CascadeType; import javax.persistence.*; import javax.persistence.Entity; import javax.persistence.Table; import java.util.HashSet; import java.util.Set; /** * Created by Administrator on 2016/6/26. */ @Entity @Table(name = "h3_main") public class Main { @Id @Column(name = "mid") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @OneToMany(targetEntity = Sub.class) @Cascade(CascadeType.ALL) @JoinColumn(name = "mid", referencedColumnName = "mid") private Set<Sub> subs = new HashSet<Sub>(); @OneToMany(targetEntity = Sub2.class) @JoinTable(name = "Main_Sub2", joinColumns = @JoinColumn(name = "mid", referencedColumnName = "mid"), inverseJoinColumns = @JoinColumn(name = "s2id", referencedColumnName = "s2id", unique = true)) private Set<Sub2> subs2 = new HashSet<Sub2>(); public Set<Sub2> getSubs2() { return subs2; } public void setSubs2(Set<Sub2> subs2) { this.subs2 = subs2; } public Set<Sub> getSubs() { return subs; } public void setSubs(Set<Sub> subs) { this.subs = subs; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } private int age; }
package com.xueyoucto.xueyou; import javax.persistence.*; /** * Created by Administrator on 2016/6/26. */ @Entity @Table(name = "h3_sub") public class Sub { @Id @Column(name = "sid") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String field1; private String field2; public Sub() { } public Sub(String field1, String field2) { this.field1 = field1; this.field2 = field2; } public String getField2() { return field2; } public void setField2(String field2) { this.field2 = field2; } public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }
package com.xueyoucto.xueyou; import javax.persistence.*; /** * Created by Administrator on 2016/6/26. */ @Entity @Table(name = "h3_sub2") public class Sub2 { @Id @Column(name = "s2id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String field1; private String field2; public Sub2() { } public Sub2(String field1, String field2) { this.field1 = field1; this.field2 = field2; } public String getField2() { return field2; } public void setField2(String field2) { this.field2 = field2; } public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }
Sub s = new Sub("11","22"); Sub s1 = new Sub("111","222"); session.persist(s); session.persist(s1); Sub2 s2 = new Sub2("2211","2222"); Sub2 s3 = new Sub2("22111","2222222"); session.persist(s2); session.persist(s3); Main m = new Main(); m.setAge(12); m.setName("mm"); /* m.getSubs().add(new Sub("11","22"));*/ /* m.getSubs().add(new Sub("1bb1","2233"));*/ m.getSubs().add(s); m.getSubs().add(s1); m.getSubs2().add(s2); m.getSubs2().add(s3); session.save(m);
运行后,数据库中增加了4个表:
h3_main
h3_sub
h3_sub2
main_sub2
注意,通过@joinColumn方式会产生外键,但是通过@joinTable不会产生外键,通过@joinTable会产生中间表。
相关文章推荐
- leetcode练习笔记
- hihoCode太阁最新面经算法6——扩展二进制数
- Java注解(Annotation)自定义注解入门
- 【杭电oj】2078 - 复习效率(水)
- win7下利用虚拟机安装ubuntu
- JavaScript
- LeetCode之14_Longest Common Prefix
- Bootstrap model的使用及点击外部不消失
- 数据的强制转换+乱码问题分析解决
- MySQL server has gone away
- 深入理解Spark ML:基于ALS矩阵分解的协同过滤算法与源码分析
- [leetcode] 358. Rearrange String k Distance Apart 解题报告
- 利用快速排序原理找出数组中前n大的数
- QQ 聊天机器人小薇 1.0.1 发布!
- Kafka总结系列(三)
- Qt学习四:控件一:按钮、标签、单行文本、多行文本
- swift 之structs相关的学习
- QQ 聊天机器人小薇 1.0.1 发布!
- QQ 聊天机器人小薇 1.0.1 发布!
- QQ 聊天机器人小薇 1.0.1 发布!