Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

kotlin - Micronaut-data with hibernate: Aborted transaction still modifies database

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...