clear()和flush()在JPA / EclipseLink中不起作用

时间:2016-02-22 06:22:14

标签: java jpa eclipselink

我只想清除实体管理器的peristence contexte,从数据库重新加载所有数据,特别是在该方法中:

public MyEntity find(Object id) {
    EntityManager em = getEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();
    em.flush();
    tx.commit();
    em.clear();
    return em.find(MyEntity .class, id);
}

但似乎flush()无法正常工作,因为当我插入OtherEntity并执行该方法时,我无法通过getCollection()方法在持久化上下文中找到它(只有在重新启动我的应用程序后)..

1 个答案:

答案 0 :(得分:0)

我找到了答案:

@Override
public MyEntity find(Object id) {
    EntityManager em = getEntityManager();
    MyEntity ps = em.find(MyEntity .class, id);
    em.refresh(ps);
    return ps;
}