【问题标题】:get an error from session.save从 session.save 得到一个错误
【发布时间】:2018-06-02 15:59:36
【问题描述】:

我创建了一个方法来将我的对象保存在休眠状态。但是保存时,我收到了来自session.save(ob);的错误

org.hibernate.HibernateException: 非法尝试将代理与两个打开的会话关联

我的代码有什么错误。

public class HibernateSession {

    public static Session getSession() {
        Session session = Connection.NewHibernateUtil.getSessionFactory().openSession();
        return session;
    }

    public static void save(Session session, Object ob) {
        Transaction transaction = session.beginTransaction();
        session.save(ob);
        session.flush();
        transaction.commit();
        session.close();
    }
}

【问题讨论】:

    标签: hibernate session methods


    【解决方案1】:

    错误解释了它自己。

    非法尝试将代理与两个打开的会话关联。

    避免使用多个打开的会话。在类的顶部创建一个会话变量并在任何地方使用它。

    修改你的保存方法如下,以确保会话是打开的。

    public static void save(Session session, Object ob) {
        if(!session.isOpen){
            session = getSession();
        }
        ....
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2021-12-17
      • 2014-09-01
      • 1970-01-01
      相关资源
      最近更新 更多