Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

question from:https://stackoverflow.com/questions/65844601/micronaut-data-with-hibernate-aborted-transaction-still-modifies-database

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.3k views
Welcome To Ask or Share your Answers For Others

1 Answer

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)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...