Session只有在清理缓存的时候的才执行delete语句。此外,只有当调用Session的close()方法时,才会从Session的缓存中删除该对象。
例如以下代码先加载一个持久化对象,然后通过delete()方法将它删除:
Session session1 = sessionFactory.openSession();
Transaction tx1 = session1.beginTransaction();
// 先加载一个持久化对象
Customer customer = (Customer)session.get(Customer.class, new Long(1));
session.delete(customer); // 执行一个delete语句
txt1.commit(); // 清理缓存,执行delete语句
session.close();// 从缓存中删除Customer对象
小结:删除数据前,开启事务,可以解决这个问题。