首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从EntityManager中清除所有实体?

如何从EntityManager中清除所有实体?
EN

Stack Overflow用户
提问于 2015-01-02 15:12:14
回答 1查看 1.8K关注 0票数 0

我正在使用EJB和JPA开发一个JavaEE应用程序。

我在做一些测试,实体在坚持。不过,我想删除这些测试之间的实体。我尝试使用EntityManager.clear()方法,但这不起作用。当我试图咨询一个旧的实体时,它仍然在EntityManager上。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-02 15:46:15

调用EntityManager.clear()不会删除实体,因为它们被持久化在数据库中。您可以关闭实体经理工厂,然后再次打开:

代码语言:javascript
运行
复制
@Before
public void beforeTest() {
    entitManagerFactory.close()
    entitManagerFactory = // new EntityManagerFactory
}

这种方法的问题是创建一个EntityManager可能会减慢测试过程。

相反,你可以做的是:

1)可以在测试之前删除所有实体:

代码语言:javascript
运行
复制
@Before
public void beforeTest() {
    // execute a query like delete from Person p
}

2)您可以为每个测试使用一个新的ID/值:

代码语言:javascript
运行
复制
@Test
public void test1() {
    Person person = PersonTestUtil.createPerson("11111");
}

@Test
public void test2() {
    Person person = PersonTestUtil.createPerson("22222");
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27744250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档