Micronaut-data with hibernate: Aborted transaction still modifies database

Viewed 188

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?

1 Answers

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)

Related