|
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();
}
}
}
|