当我单独运行我的单元测试时,它们可以正常工作。 (省略断言)JPA错误:事务处理当前处于活动状态
@Test
public void testSave()
{
EntityManagerHelper emh = new EntityManagerHelper();
LevelDAO dao = new LevelDAO();
Level l = new Level();
l.setName("aname");
emh.beginTransaction();
dao.save(l);
emh.commit();
}
然后运行下面没有问题
@Test
public void testUpdate()
{
EntityManagerHelper emh = new EntityManagerHelper();
LevelDAO dao = new LevelDAO();
Level l = new Level();
l.setName("bname");
l.setLevelid(1);
emh.beginTransaction();
dao.update(l);
emh.commit();
}
这单个测试当他们在同一时间顺序运行我收到的错误 - 事务是当前活动。有没有办法让每个单元测试只在前一件工作的事务处于非活动状态后才能运行?我应该看看Spring吗?
更新
的EntityManagerHelper能够访问到持久化上下文,像这样
emf = Persistence.createEntityManagerFactory("bw_beta");
threadLocal = new ThreadLocal<EntityManager>();
它看起来像问题
所以哈克的解决方法是使用本地即定义。
EntityManagerFactory factory = Persistence.createEntityManagerFactory("bw_beta");
EntityManager entityManager = factory.createEntityManager();
entityManager.getTransaction().begin();
dao.save(l);
entityManager.persist(l);
entityManager.getTransaction().commit();
很确定有更好的方法 - 也许使用Spring?
'EntityManagerHelper'内发生了什么? – axtavt
@DataNucleus:他没有说他想要并行运行它们。 –
什么是异常的堆栈跟踪? –