您的位置:首页 > 其它

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会产生中间表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: