gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:58 29 4
gpt4 key购买 nike

我想保存具有唯一字段的实体。我不想检查是否违反约束,而是想以某种方式跳过 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com