HIbernate 一对多双向注解
Posted liuzhe01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象属性,也就是双向的一对多
以上是关于HIbernate 一对多双向注解的主要内容,如果未能解决你的问题,请参考以下文章