我正在使用EJB和JPA开发一个JavaEE应用程序。
我在做一些测试,实体在坚持。不过,我想删除这些测试之间的实体。我尝试使用EntityManager.clear()方法,但这不起作用。当我试图咨询一个旧的实体时,它仍然在EntityManager上。
我该如何解决这个问题?
发布于 2015-01-02 15:46:15
调用EntityManager.clear()不会删除实体,因为它们被持久化在数据库中。您可以关闭实体经理工厂,然后再次打开:
@Before
public void beforeTest() {
entitManagerFactory.close()
entitManagerFactory = // new EntityManagerFactory
}
这种方法的问题是创建一个EntityManager可能会减慢测试过程。
相反,你可以做的是:
1)可以在测试之前删除所有实体:
@Before
public void beforeTest() {
// execute a query like delete from Person p
}
2)您可以为每个测试使用一个新的ID/值:
@Test
public void test1() {
Person person = PersonTestUtil.createPerson("11111");
}
@Test
public void test2() {
Person person = PersonTestUtil.createPerson("22222");
}
https://stackoverflow.com/questions/27744250
复制相似问题