Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 不使用@transactional for spring test回滚数据库中的更改_Hibernate_Jpa_Rollback - Fatal编程技术网

Hibernate 不使用@transactional for spring test回滚数据库中的更改

Hibernate 不使用@transactional for spring test回滚数据库中的更改,hibernate,jpa,rollback,Hibernate,Jpa,Rollback,我正在创建一个需要将数据保存在数据库中的测试,因此我不能使用@Transactional,因为我需要将数据有效地保存在数据库中,问题是不使用@transaction是否可以在提交后回滚事务?在每次测试之前,您的数据库应处于已知状态,并且任何一个测试都不应依赖于另一个测试的结果。如果出于某些其他原因需要提交(例如测试故障排除),则可以使用以下注释对测试类或单个测试方法进行注释: @Rollback(false)或@Commit @Rollback指示是否为事务测试创建事务 方法应在测试方法完成

我正在创建一个需要将数据保存在数据库中的测试,因此我不能使用
@Transactional
,因为我需要将数据有效地保存在数据库中,问题是不使用
@transaction
是否可以在提交后回滚事务?

在每次测试之前,您的数据库应处于已知状态,并且任何一个测试都不应依赖于另一个测试的结果。如果出于某些其他原因需要提交(例如测试故障排除),则可以使用以下注释对测试类或单个测试方法进行注释:

@Rollback(false)
@Commit

@Rollback指示是否为事务测试创建事务 方法应在测试方法完成后回滚。如果 如果为true,则事务将回滚;否则,事务将被删除 已提交(另请参见@Commit)。集成测试的回滚语义 在SpringTestContext框架中,即使@Rollback也默认为true 未显式声明


Spring将自动回滚标记为
@Transactional
的测试。在测试方法的范围内,您应该仍然能够查询数据库中以前保存的数据。@crizzis是的,但想法不是使用
@Transactional
,因为我需要在测试中提交。您可以有一个用@After注释的清理方法,在每次测试后清理数据库。请描述您的用例(为什么您认为需要提交事务)?正如我所说,所有加入事务的bean都将看到数据修改。除非您的测试涉及多个线程或生成一个子事务,否则您应该可以