1

I currently encounter issues trying to get micronaut-data to work with transactions.

To the best of my understanding, a flow of:

  • start transaction
  • perform write 1
  • throw exception

Should yield an unmodified database, i.e. the transaction should be rolled back.

I created a minimal example using micronaut-web start, a simple entity, repository and a test with different attempts of using @Transactional, SynchronousTransactionManager etc, but in all cases, the database modification is visible after the transaction. The minimal example can be found here: https://github.com/Spellmaker/transactiontestgradle/

The direct link to the test class: https://github.com/Spellmaker/transactiontestgradle/blob/master/src/test/kotlin/com/example/TransactiontestgradleTest.kt

Obviously, something must be wrong with the configuration or my understanding of transactions. So which one is it?

Spellmaker
  • 11
  • 1

1 Answers1

0

As answered on gitter, @MicronautTest starts a transaction for each test and manages that. To test transactions in a test, this behavior has to be disabled manually via

@MicronautTest(transactional=false)

Spellmaker
  • 11
  • 1
  • I am trying to make my method transactional but it's not getting rolled back in case of exception. Did you had same type of issue ? https://stackoverflow.com/questions/68285261/how-to-make-a-method-transactional-in-micronaut – Manish Jul 12 '21 at 15:08