休眠约束违反异常挂起sql server

Posted

技术标签:

【中文标题】休眠约束违反异常挂起sql server【英文标题】:Hibernate constraint violation exception hangs sql server 【发布时间】:2017-03-21 10:20:31 【问题描述】:

我正在尝试将一组记录保存到数据库中,如下所示。我在表的 2 列上设置了唯一约束。我已经处理了约束异常。如果我插入新的记录集,我没有问题。如果我尝试插入重复记录,则会处理异常,但 ms sql server 会说

执行查询。等待数据源的响应。

此外,如果我尝试插入新记录集,则 http 请求未完成并且记录未插入。应该如何处理约束异常,让ms sql server不挂起?

public void addStepFlow(List<StepFlow> stepFlows) 

        Session session = this.sessionFactory.openSession();
        try 
        Transaction tx = session.beginTransaction();
        for (StepFlow stepFlow : stepFlows) 

            session.save(stepFlow);

            session.flush();
            session.clear();
        
        tx.commit();
        session.close();
         catch (JDBCException e) 
            SQLException cause = (SQLException) e.getCause();
            System.out.println(cause.getMessage());
        
    

【问题讨论】:

为什么不做批量插入而不是一个一个地插入? 刚开始学习。不知道该怎么做。 【参考方案1】:

尝试回滚异常.. 并且无论发生什么都关闭会话:

    Session session = this.sessionFactory.openSession();
    Transaction tx = null;
    try 
    tx = session.beginTransaction();
    for (StepFlow stepFlow : stepFlows) 

        session.save(stepFlow);

        session.flush();
        session.clear();
    
    tx.commit();

     catch (JDBCException e) 
        SQLException cause = (SQLException) e.getCause();
        System.out.println(cause.getMessage());

        tx.rollback();
    finally
        session.close();
    

【讨论】:

是的,必须在尝试块之前定义 tx.. 尝试我的更新 是的,我忘了紧张。做到了 太棒了。很高兴我能帮忙

以上是关于休眠约束违反异常挂起sql server的主要内容,如果未能解决你的问题,请参考以下文章

事务在休眠中不回滚

请问Ubuntu操作系统 挂起和休眠有啥区别?哪个更省电

休眠 SQL 错误:17002,SQLState:空 Io 异常:连接重置

在 SQL Server 2008 中使用休眠

arcolinux挂起休眠混合睡眠区别

如何为 sql server 配置休眠配置文件