我正在将休眠从3.X迁移到休眠版本5.4.2。进行刷新操作时出现以下错误
javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:398)
at org.hibernate.internal.SessionImpl.checkTransactionNeededForUpdateOperation(SessionImpl.java:3619)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1474)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1470)
设置值hibernate.allow_update_outside_transaction=true
后,它可以正常工作。
我不想使用hibernate.allow_update_outside_transaction=true.
属性,因为它违反原子性概念。有什么方法可以在事务内运行冲洗。
答案 0 :(得分:-1)
不,不可能。
如果您未设置hibernate.allow_update_outside_transaction=true
,则默认为false
,并拒绝事务边界之外的任何更新操作。甚至可以通过异常的名称看到这一点。
但是为什么hibernate.allow_update_outside_transaction=true
属性违反原子性概念?相反,原子性的概念假定该组操作将以原子方式执行,即完全成功或完全失败。事务只是提供了这种原子性。