休眠约束违反异常挂起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的主要内容,如果未能解决你的问题,请参考以下文章