多对一含义:会在多的一端加个外键指向一的一方,外键Id是由<many-to-one> 属性中的columu定义,忽略默认是实体名字一致
基础配置:
<many-to-one name="dept" class="org.ymm.entity.Dept" cascade="save-update" >
<column name="DEPTNO" precision="2" scale="0" />
</many-to-one>
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
理解级联(cascade):all,save-update,persist,delete,lock,delete
连锁操作 (对增删改 起作用)
dept和emp表测试
package org.ymm.test;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.ymm.entity.Dept;
import org.ymm.entity.Emp;
public class Test {
// public static void main(String[] args) {
// Configuration configur=new Configuration().configure();
// SessionFactory sf=configur.buildSessionFactory();
// Session session =sf.openSession();
// Transaction t=session.beginTransaction();
//
// //多对一查询
// Emp e=(Emp) session.get(Emp.class, 7369);
// System.out.println(e.getDept().getDname());
//
// t.commit();
// session.close();
// }
// public static void main(String[] args) {
// Configuration configur=new Configuration().configure();
// SessionFactory sf=configur.buildSessionFactory();
// Session session =sf.openSession();
// Transaction t=session.beginTransaction();
//
// Dept d=new Dept();
// d.setDeptno(12);
// d.setDname("xx");
// //一的这边必须是持久状态 可以用cascade属性先保存,也可以自己用session保存
// //session.save(d);
//
// Emp e =new Emp();
// e.setEmpno(12);
// e.setEname("xxmm");
// e.setDept(d);
//
// session.save(e);
//
// t.commit();
// session.close();
// }
public static void main(String[] args) {
Configuration configur = new Configuration().configure();
SessionFactory sf = configur.buildSessionFactory();
Session session = sf.openSession();
Transaction t = session.beginTransaction();
Dept d = (Dept) session.load(Dept.class, 11);
// 一的这边必须是持久状态 可以用cascade属性先保存,也可以自己用session保存
// session.save(d);
Emp e = new Emp();
e.setEmpno(11);
e.setEname("xx11");
e.setDept(d);
session.saveOrUpdate(e);
t.commit();
session.close();
}
}