我正在玩Spring Data Repository并且有关于编写CRUD测试的问题。我已经针对Hibernate DAO和EJB 3实体bean编写了许多CRUD测试,我在其中创建和实体,将其刷新到数据库,清除实体管理器,然后通过ID读取它。清除实体管理器,以便在读取时不会触发第一级缓存。
使用Spring Data存储库我无法找到清除测试所使用的底层实体管理器的方法,因此我的读取不会返回到实际的数据库,从而使我的测试无效。
有没有办法在测试中清除实体管理器?有没有办法可以将一个注入我的测试中,以便存储库使用它?
谢谢!
科里。
答案 0 :(得分:0)
通过注入这样的实体管理器来尝试:
@PersistenceContext
EntityManager entityManager
并通过在测试方法上设置@Transactional属性来使您的测试成为事务。然后在方法内部,您可以调用entityManager.flush()方法。
此致
答案 1 :(得分:0)
如果希望自动清除EntityManager,可以将@Modifying批注的clearAutomatically属性设置为true。 Please see here