非法尝试将代理与两个公开会话相关联

时间:2014-11-23 10:47:13

标签: java mysql hibernate

我有一个使用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;
    }
}

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

确保正确管理会话。完成Hibernate会话后,您应该关闭它。

我怀疑你在一个你不会关闭的会话中加载了员工,只是试图在其他会话中删除它。

答案 1 :(得分:0)

修改代码如下:

getCurrentSession().delete(persistentInstanceDAO.getById(persistentInstance.Id();

通过id获取数据库中的对象,该ID将在删除前刷新当前hibernate会话的Employee对象。