【问题标题】:Hibernate: getting error to run this SQL query "alter session enable parallel dml" in Hibernate 5.4.x versionHibernate:在 Hibernate 5.4.x 版本中运行此 SQL 查询“alter session enable parallel dml”时出错
【发布时间】:2021-04-17 19:37:07
【问题描述】:

我已在我的应用程序中将 Hibernate 4.x 版本升级到 Hibernate 5.4.x 版本。

在 SQL 查询下运行时出现以下错误:

javax.persistence.TransactionRequiredException: 执行一个 更新/删除查询 org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:413) 在 org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1668)

SQL 查询:

hibernateSession.createSQLQuery("alter session enable parallel dml").executeUpdate();

在上述 dml 查询失败后,并行运行的删除查询也失败了。

我尝试在方法级别和类级别使用@Transactional 注释(import org.springframework.transaction.annotation.Transactional;),但这并没有解决我的问题。

任何解决此错误的建议都将非常受欢迎。

【问题讨论】:

    标签: java spring hibernate hibernate-5.x


    【解决方案1】:

    看起来您的事务管理器集成无法正常工作,因为 Hibernate 无法加入事务。不确定您的 Spring 配置如何,但肯定有问题。我猜你也更新了Spring?也许您正在使用现在不受支持的配置?

    【讨论】:

    • 嗨,Christian,是的,我已将 Spring 4.x 升级到 Spring 5.x 版本。我正在使用无状态会话来运行此 DML SQL 查询。
    • 您在迁移指南中看到过这个吗? github.com/spring-projects/spring-framework/wiki/…
    • 是的,我现在已经检查了该指南并在休眠会话中添加了开始事务。但现在得到这个低于错误 ERROR | ORA-12801: 并行查询服务器 P00V 发出错误信号 ORA-12829: 死锁 - 文件 175 的块 3591658 处的兄弟姐妹占用了它
    【解决方案2】:

    我在代码中添加了开始事务以解决上述错误。

    Transaction trans = session.beginTransaction();
    

    这个解决方案帮我解决了这个错误。

    javax.persistence.TransactionRequiredException: 执行一个 更新/删除查询

    但现在出现新错误

    错误 | ORA-12801: 在并行查询服务器 P00V 中发出错误信号 ORA-12829: 死锁 - itls 在块 3591658 处被兄弟姐妹占用 文件 175

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多