1
我已經使用HQL編寫了一個簡單的Hibernate程序。 我已經將SELECT和UPDATE都包括進去了。當我更新任何記錄並嘗試顯示它時,它會返回舊記錄。 我在UPDATE之後提交事務,但仍然提取舊記錄。 當我爲SELECT添加新會話時,它會獲取更新的新記錄。我是否需要每次創建新會話以獲取最新記錄?獲取舊記錄
AppMain.class:
package com.HQL.Main;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.HQL.Model.Employee;
public class AppMain {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Query query = null;
List<Employee> list1 = null;
query = session.createQuery("from Employee");
list1 = query.list();
for (Employee emp : list1) {
System.out.println("\nEmployee ID:\t" + emp.getId() + "\nEmployee name:\t" + emp.getName()
+ "\nEmployee Age:\t" + emp.getAge() + "\nEmployee Salary:" + emp.getSalary());
}
query = session.createQuery("update Employee set age=:empname where id=:eid");
query.setParameter("empname",36);
query.setParameter("eid",3);
int result = query.executeUpdate();
System.out.println("Result:"+result);
tx.commit();
session = sessionFactory.openSession();
Query query1 = session.createQuery("from Employee");
list1 = query1.list();
for (Employee emp : list1) {
System.out.println("\nEmployee ID:\t" + emp.getId() + "\nEmployee name:\t" + emp.getName()
+ "\nEmployee Age:\t" + emp.getAge() + "\nEmployee Salary:" + emp.getSalary());
}
//tx.commit();
session.close();
sessionFactory.close();
}
}
我已經包括會議結束後。 flush()到我的代碼中但sti它會在顯示時取出舊記錄。 –
刷新後,嘗試使用相同的會話,而不是開始另一個會話 –
是的,我已經使用了會話。 –