如何清除 EntityManager 中的所有实体?
How to clean all entities from EntityManager?
我正在使用 EJB 和 JPA 开发 JavaEE 应用程序。
我正在做一些测试,实体正在持续存在。虽然,我想删除这些测试之间的实体。我尝试使用方法 EntityManager.clear() 但这不起作用。当我尝试咨询其中一个旧实体时,它仍在 EntityManager 上。
我该如何解决这个问题?
调用 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/values:
@Test
public void test1() {
Person person = PersonTestUtil.createPerson("11111");
}
@Test
public void test2() {
Person person = PersonTestUtil.createPerson("22222");
}
我正在使用 EJB 和 JPA 开发 JavaEE 应用程序。
我正在做一些测试,实体正在持续存在。虽然,我想删除这些测试之间的实体。我尝试使用方法 EntityManager.clear() 但这不起作用。当我尝试咨询其中一个旧实体时,它仍在 EntityManager 上。
我该如何解决这个问题?
调用 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/values:
@Test
public void test1() {
Person person = PersonTestUtil.createPerson("11111");
}
@Test
public void test2() {
Person person = PersonTestUtil.createPerson("22222");
}