HIbernate 一对多双向注解

package cn.hbonetomany;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

/**
* Created by Administrator on 2017-10-9.
*/
/*声明这个类是持久化实体类*/
@Entity //指定实体类
@Table(name = "DEPTS")
 //指定表的名称
public class Dept {
@Id //指定主键
    /*
* 当前deptno属性紧跟@Id后的属性,为该表的主键
* */
@GeneratedValue
/声明主键生成策略
    private Integer deptno;
private String deptname;
/*
* mappedBy=“dept” 根据Emp类找外键的属性
* 只有多的一方有外键,cascade 级联作用只需要操作一张表
* */
@OneToMany(mappedBy = "deptno11",cascade =CascadeType.ALL)
//指定一对多关系//设定级联关系 All 全部,save_update

private Set<Emp> emps= new HashSet<Emp>();

public Set<Emp> getEmps() {
return emps;
}

public void setEmps(Set<Emp> emps) {
this.emps = emps;
}

public Integer getDeptno() {
return deptno;
}

public void setDeptno(Integer deptno) {
this.deptno = deptno;
}

public String getDeptname() {
return deptname;
}

public void setDeptname(String deptname) {
this.deptname = deptname;
}
}

package cn.hbonetomany;
import javax.persistence.*;
/**
* Created by Administrator on 2017-10-9.
*/
@Entity
@Table(name = "EMPS")
public class Emp {
@Id
@GeneratedValue
private Integer empno;
private String empname;

public Dept getDept() {
return deptno11;
}

public void setDept(Dept dept) {
this.deptno11 = dept;
}
@ManyToOne(fetch = FetchType.LAZY)
    多的一方最好别设定级联关系
    @JoinColumn(name = "deptno")//指定与本类主键所对应的外表的外键
    private Dept deptno11;

public Integer getEmpno() {
return empno;
}

public void setEmpno(Integer empno) {
this.empno = empno;
}

public String getEmpname() {
return empname;
}

public void setEmpname(String empname) {
this.empname = empname;
}
}

主表没有外键,从表有外键一对多就是采取了关联主表外键
Dept植入集合Emp可以说是植入了一个多的一方,Emp只需导入Dept对象属性,也就是双向的一对多
posted @ 2017-10-10 14:37  liuzhe01  阅读(233)  评论(0编辑  收藏  举报