在使用 Hibernate 5 作為我的 JPA 提供程式的 Java 1.8 SE 環境中,我有以下代碼:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Employee employee = new Employee(1);
employee.setName("Bob");
employee.setSalary(100000);
em.persist(employee);
System.out.println("em" em.find(Employee.class, 1));
System.out.println("em all Employees" em.createQuery("SELECT e from Employee e", Employee.class).getResultList());
em.clear();
em.getTransaction().commit();
System.out.println("em after commit " em.find(Employee.class, 1));
System.out.println("em after commit all Employees" em.createQuery("SELECT e from Employee e", Employee.class).getResultList());
em.close();
emf.close();
em.clear()由于在提交之前呼叫,我期待這個輸出:
emEmployee(id=1, name=Bob, salary=100000.0)
em after commit null
em after commit all Employees[]
但得到:
emEmployee(id=1, name=Bob, salary=100000.0)
em all Employees[Employee(id=1, name=Bob, salary=100000.0)]
em after commit Employee(id=1, name=Bob, salary=100000.0)
em after commit all Employees[Employee(id=1, name=Bob, salary=100000.0)]
getResultList()如果我在之前的呼叫中注釋掉該行em.clear(),我會得到預期的輸出。為什么我在呼叫時沒有得到預期的輸出getResultList?
uj5u.com熱心網友回復:
SQL 日志將在執行查詢之前顯示插入/更新。由提供者決定如何處理何時將陳述句重繪 到資料庫,但這可以通過在Query、EntityManager或具有提供者特定屬性的持久性單元上指定 FlushModeType 來配置(請參閱hibernate和EclipseLink)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490066.html
