我有一个使用hibernate连接MySQL数据库的java应用程序。问题是,当我尝试删除任何项目时,我得到这个例外:
org.hibernate.HibernateException:非法尝试关联a 代理有两个开放的会话
这是我的删除代码:
public void delete(Employee persistentInstance) {
log.debug("deleting Employee instance");
try {
getCurrentSession().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
有人可以帮我吗?
答案 0 :(得分:0)
确保正确管理会话。完成Hibernate会话后,您应该关闭它。
我怀疑你在一个你不会关闭的会话中加载了员工,只是试图在其他会话中删除它。
答案 1 :(得分:0)
修改代码如下:
getCurrentSession().delete(persistentInstanceDAO.getById(persistentInstance.Id();
通过id获取数据库中的对象,该ID将在删除前刷新当前hibernate会话的Employee对象。