Spring Data JPA存储库CRUD测试

时间:2014-07-16 13:10:12

标签: spring-data-jpa

我正在玩Spring Data Repository并且有关于编写CRUD测试的问题。我已经针对Hibernate DAO和EJB 3实体bean编写了许多CRUD测试,我在其中创建和实体,将其刷新到数据库,清除实体管理器,然后通过ID读取它。清除实体管理器,以便在读取时不会触发第一级缓存。

使用Spring Data存储库我无法找到清除测试所使用的底层实体管理器的方法,因此我的读取不会返回到实际的数据库,从而使我的测试无效。

有没有办法在测试中清除实体管理器?有没有办法可以将一个注入我的测试中,以便存储库使用它?

谢谢!

科里。

2 个答案:

答案 0 :(得分:0)

通过注入这样的实体管理器来尝试:

@PersistenceContext
EntityManager entityManager

并通过在测试方法上设置@Transactional属性来使您的测试成为事务。然后在方法内部,您可以调用entityManager.flush()方法。

此致

答案 1 :(得分:0)

如果希望自动清除EntityManager,可以将@Modifying批注的clearAutomatically属性设置为true。 Please see here