I create a new entity T newT and persistend it,then I create a query "select t from T t" to fetch all T entities.But then the newT is not contain in the query result. Why?
code order:
query.setFlushMode(FlushModeType.AUTO); query.getResultList();
I create a new entity T newT and persistend it,then I create a query "select t from T t" to fetch all T entities.But then the newT is not contain in the query result. Why?
code order:
query.setFlushMode(FlushModeType.AUTO); query.getResultList();
The following example demonstrates how it works:
public final class FlushQueryTest { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("$objectdb/flush.odb"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); User user = new User(); em.persist(user); Query query = em.createQuery("SELECT u FROM User u"); query.setFlushMode(FlushModeType.AUTO); System.out.println("count: " + query.getResultList().size()); em.getTransaction().rollback(); em.close(); emf.close(); } @Entity static final class User {} }
Maybe you are using a different EntityManager for the query?
Updates can only be visible before commit in the EntityManager that was used to apply the updates.
Thanks!
I are using a different EntityManager for the query.