我正在使用EJB和JPA開發JavaEE應用程序。如何從EntityManager中清除所有實體?
我正在做一些測試和實體堅持。雖然,我想刪除這些測試之間的實體。我試圖使用方法EntityManager.clear()但這不起作用。當我嘗試諮詢其中一箇舊實體時,它仍然位於EntityManager上。
我該如何解決這個問題?
我正在使用EJB和JPA開發JavaEE應用程序。如何從EntityManager中清除所有實體?
我正在做一些測試和實體堅持。雖然,我想刪除這些測試之間的實體。我試圖使用方法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 /值對每個測試:
@Test
public void test1() {
Person person = PersonTestUtil.createPerson("11111");
}
@Test
public void test2() {
Person person = PersonTestUtil.createPerson("22222");
}
你正在使用什麼樣的數據庫? – uaiHebert
我使用JavaDB和GlassFish,JPA提供者是EclipseLink – Ghost