使用OpenJPA在Spring中进行测试之间的清除持久性

问题描述 投票:1回答:1

我正在使用Spring Data JPA和HSQLDB,并将OpenJPA作为JPA提供程序。

创建了2个测试类(SpringBootTest),它们依次执行,都使用相同的存储库来保存(使用save()CrudRepository)实体。

@Entity(name = "theentity")
public class TheEntity {
   @GeneratedValue(strategy= GenerationType.IDENTITY)
   @Id
   private int id;
}


@Bean
public PlatformTransactionManager transactionManager() {
   final JpaTransactionManager tm = new JpaTransactionManager();
   tm.setEntityManagerFactory(entityManagerFactory());
   return tm;
}

问题是,当我运行第二个测试类时,我希望清除包含identity列起始值的持久性。

但是上面没有发生。

使用休眠时,添加注释:

@Transactional(propagation = Propagation.NOT_SUPPORTED)

测试类之上为我完成了所有工作(回滚),不幸的是,注释对OpenJPA没有任何作用。

是否有其他替代方法?也许需要在persistence.xml内添加一些属性或向TransactionManager bean中添加某些内容?

hibernate spring-boot jpa openjpa
1个回答
0
投票

默认情况下,数据JPA测试是事务性的,并在最后回滚每个测试。

摘自文档

数据JPA测试还可以注入TestEntityManager bean,提供了标准JPA EntityManager的替代方案,即专为测试而设计。

示例和详细信息here
© www.soinside.com 2019 - 2024. All rights reserved.