Hibernate关联关系映射之一对多关联关系(二)

2015-07-24 10:43:36 · 作者: · 浏览: 9
loyee) query.uniqueResult(); System.out.println(e.getName() + "属于" + e.getDepartment().getName()); } // 解除关联关系,相当于某一个员工离开原来部门,并不删除两个表中数据 // 从员工方删除 @org.junit.Test public void removeRelation() { session = HibernateSessionFactory.getSession(); tran = session.beginTransaction(); try { Department de = new Department(); de.setId(1); de.setName("宣传部"); session.save(de); Employee e = (Employee) session.get(Employee.class, 3); e.setDepartment(de); session.save(e); tran.commit(); } catch (Exception e) { tran.rollback(); } } // 删除员工方 @org.junit.Test public void deleteEmployee() { session = HibernateSessionFactory.getSession(); tran = session.beginTransaction(); try { Employee e = (Employee) session.get(Employee.class, 4); session.delete(e); tran.commit(); } catch (Exception e) { tran.rollback(); } } // 删除部门 @org.junit.Test public void deleteDepartment() { session = HibernateSessionFactory.getSession(); tran = session.beginTransaction(); try { Department de = (Department) session.get(Department.class, 1); /* * 如果没有关联的员工,能删除 * 如果有关联的员工,且inverse属性为true,由于由不能维护关联,所以会直接执行删除,就会有异常 * 如果有关联的与昂,且inverse属性为false,由于可以维护关联关系,他就会先把关联的员工的外键设为null。在删除 */ session.delete(de); tran.commit(); } catch (Exception e) { tran.rollback(); } } }