javax.persistence.TransactionRequiredException: no transaction is in progress

Spring JIRA | Manuel Dominguez Sarmiento | 8 months ago
tip
Do you know that we can give you better hits? Get more relevant results from Samebug’s stack trace search.
  1. 0

    Hibernate 5.2.0 changed the method signature for Session.getFlushMode() so that it returns a javax.persistence.FlushModeType instead of a org.hibernate.FlushMode Spring 4.3.0 introduced several changes so that it could remain compatible with both 5.1.0 and 5.2.0 mainly by introducing indirection to obtain the Hibernate flush mode through SessionFactoryUtils.getFlushMode(session). However, this necessary change was omitted from SpringSessionSynchronization which still uses the following code snippet in beforeCommit(): if (!session.getFlushMode().equals(FlushMode.MANUAL)) { ... } which should now be: FlushMode flushMode = SessionFactoryUtils.getFlushMode(session); if (FlushMode.MANUAL.equals(flushMode)) { ... } This has critical consequences. Due to this bug, Spring 4.3.0 is not compatible with either Hibernate 5.1.0 nor 5.2.0 When using Hibernate 5.1.0 this bug causes a java.lang.NoSuchMethodError due to the method signature change: java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode()Ljavax/persistence/FlushModeType; at org.springframework.orm.hibernate5.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:101) While in Hibernate 5.2.0 this causes javax.persistence.TransactionRequiredException due to equals(FlushMode.MANUAL) always returning false since it is comparing javax.persistence.FlushModeType vs org.hibernate.FlushMode javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3392) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1385) at org.springframework.orm.hibernate5.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:104)

    Spring JIRA | 8 months ago | Manuel Dominguez Sarmiento
    javax.persistence.TransactionRequiredException: no transaction is in progress
  2. 0

    Hibernate 5.2.0 changed the method signature for Session.getFlushMode() so that it returns a javax.persistence.FlushModeType instead of a org.hibernate.FlushMode Spring 4.3.0 introduced several changes so that it could remain compatible with both 5.1.0 and 5.2.0 mainly by introducing indirection to obtain the Hibernate flush mode through SessionFactoryUtils.getFlushMode(session). However, this necessary change was omitted from SpringSessionSynchronization which still uses the following code snippet in beforeCommit(): if (!session.getFlushMode().equals(FlushMode.MANUAL)) { ... } which should now be: FlushMode flushMode = SessionFactoryUtils.getFlushMode(session); if (FlushMode.MANUAL.equals(flushMode)) { ... } This has critical consequences. Due to this bug, Spring 4.3.0 is not compatible with either Hibernate 5.1.0 nor 5.2.0 When using Hibernate 5.1.0 this bug causes a java.lang.NoSuchMethodError due to the method signature change: java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode()Ljavax/persistence/FlushModeType; at org.springframework.orm.hibernate5.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:101) While in Hibernate 5.2.0 this causes javax.persistence.TransactionRequiredException due to equals(FlushMode.MANUAL) always returning false since it is comparing javax.persistence.FlushModeType vs org.hibernate.FlushMode javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3392) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1385) at org.springframework.orm.hibernate5.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:104)

    Spring JIRA | 8 months ago | Manuel Dominguez Sarmiento
    javax.persistence.TransactionRequiredException: no transaction is in progress
  3. Speed up your debug routine!

    Automated exception search integrated into your IDE

  4. 0

    Proper way to configure Spring transaction manager on a multi-datasource scenario (hibernate 5.2.6)

    Stack Overflow | 4 weeks ago | tggm
    javax.persistence.TransactionRequiredException: no transaction is in progress
  5. 0

    camel-jpa "no transaction is in progress"

    Stack Overflow | 5 months ago | dermoritz
    javax.persistence.TransactionRequiredException: no transaction is in progress

    2 unregistered visitors

    Root Cause Analysis

    1. javax.persistence.TransactionRequiredException

      no transaction is in progress

      at org.hibernate.internal.SessionImpl.checkTransactionNeeded()
    2. Hibernate
      SessionImpl.flush
      1. org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3392)
      2. org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1385)
      2 frames
    3. org.springframework.orm
      SpringSessionSynchronization.beforeCommit
      1. org.springframework.orm.hibernate5.SpringSessionSynchronization.beforeCommit(SpringSessionSynchronization.java:104)
      1 frame