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 一对多双向注解
原文地址:http://www.cnblogs.com/hualishu/p/7645498.html