java - Hibernate 在 sessionFactory.getCurrentSession() 上失败

标签 java spring hibernate exception spring-transactions

我想保存具有唯一字段的实体。我不想检查是否违反约束,而是想以某种方式跳过 DataIntegrityViolationException 。

我发现我可以通过以下方式做到这一点:

@Transactional
wrapperMethod() {
    methodWhenInsertIsDone();
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
methodWhenInsertIsDone() {
    failingMethod();
}

failingMethod(){
    sessionFactory.getCurrentSession().blablabla()
}

当我运行它时,出现以下异常:

HibernateException: Could not obtain transaction-synchronized Session

所有这些方法都在服务层类中。 @EnableTransactionManagement 存在,HibernateTransactionManager 已定义。没有 @Transactional 一切正常。

您能否告诉我这里出了什么问题或者/或者建议另一种方法来吞下 DataIntegrityViolationException 异常而不使用 try/catch block 。

提前感谢您的每一个想法!

更新:我正在将 methodWhenInsertIsDone 移动到另一个类中,因为现在它不是从代理对象调用的。

更新:异常已消失,但 Propagation.REQUIRES_NEW 没有帮助。所以现在我需要寻找其他解决方案吞下DataIntegrityViolationException。如果您有的话请告诉我。我可以为其创建一个新问题。

最佳答案

我已将 methodWhenInsertIsDone 移到另一个类中,因为它不是从代理对象调用的。异常消失了。

但是Propagation.REQUIRES_NEW没有帮助。所以现在我需要寻找其他解决方案来吞下DataIntegrityViolationException。如果您有的话请告诉我。我可以为其创建一个新问题。

关于java - Hibernate 在 sessionFactory.getCurrentSession() 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42786352/

相关文章:

java - 无法在 hibernate 中找到数据源

java - 数据库中的灵活搜索

java - 来自不同 tomcat webapps 的冲突 spring bean

java - Tomcat 7 泽西 REST 不工作

java - 没有打印语句,循环看不到其他线程更改的值

java - 如何用Java询问用户是否要退出程序并打印出感谢信息

java - 通过 Spring Boot 调用 AirTable Rest API 返回 401

java - 应用程序/ war 部署失败时如何关闭tomcat服务?

java - 在 spring-mvc 中使用抽象工厂模式时出现空指针异常

java - 如何在java中为实体实现状态转换?