Hibernate会话管理器,用于批量插入和同时提取

时间:2014-11-25 05:54:42

标签: java database spring hibernate session

我是hibernate的新手。我遇到了hibernate会话问题。当我试图插入我将使用的数据      session.openSession();

完成更新后我使用session.flush(); session.clear();和session.close()。 我不知道如何保持这一点。我得到了死锁异常。在插入的同时,我打开另一个会话以获取数据。

请帮帮我..这是我现有的示例代码

@Autowired
@Qualifier("messageListenerReportSessionFactory")
private SessionFactory messageListenerReportSessionFactory;

    Session session = messageListenerReportSessionFactory.openSession();
    if(session != null && session.isOpen()){
        try{
            Transaction tx= session.beginTransaction();
            Query q = session.createQuery("Update "+tableName+" set isUser = ? where id = ?");

            q.setInteger(0, 2);
            q.setLong(1, id);

            q.executeUpdate();
            tx.commit(); tx = null;

        }catch(Exception ex){
            PointelTraceLogger.logger.log(Level.ERROR, "[Audit] Error in updateUser() in com.pointel.application.database.pointelreport.MessageListenerReportDao");
            PointelTraceLogger.writeStackTrace(ex);
        }finally{
            session.clear();
            session.close();
        }
    }

0 个答案:

没有答案