多对一含义:会在多的一端加个外键指向一的一方,外键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(); } }