1

我目前在尝试让 micronaut-data 处理事务时遇到问题。

据我了解,流程如下:

  • 开始交易
  • 执行写入 1
  • 抛出异常

应该产生一个未修改的数据库,即事务应该回滚。

我使用 micronaut-web start、一个简单的实体、存储库和一个测试创建了一个最小的示例,并尝试使用 @Transactional、SynchronousTransactionManager 等进行不同的尝试,但在所有情况下,数据库修改在事务之后都是可见的。最小的例子可以在这里找到:https ://github.com/Spellmaker/transactiontestgradle/

测试类的直接链接:https ://github.com/Spellmaker/transactiontestgradle/blob/master/src/test/kotlin/com/example/TransactiontestgradleTest.kt

显然,配置或我对事务的理解一定有问题。那么是哪一个呢?

4

1 回答 1

0

正如在 gitter 上回答的那样,@MicronautTest 为每个测试启动一个事务并对其进行管理。要在测试中测试事务,必须通过手动禁用此行为

@MicronautTest(事务=假)

于 2021-01-26T10:22:50.643 回答