私はインターネット上の簡単なHibernateチュートリアルに従っています。 executeUpdateが成功したようです(返された行数は1でした)。しかし、私がlist()を呼び出すと、私は古い結果を返しました。これは休止状態の予想される動作ですか?とにかく、同じトランザクションで更新されたデータを取得できますか?結果が返されたHibernate executeUpdateは成功しましたが、リスト操作が変更を反映していません
//Prep work
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.getCurrentSession();
//Get All Employees
Transaction tx = session.beginTransaction();
Query query = session.createQuery("from Employee");
List<Employee> empList = query.list();
for(Employee emp : empList){
System.out.println("List of Employees::"+emp.getId()+","+emp.getAddress().getCity());
}
//Update Employee
query = session.createQuery("update Employee set name= :name where id= :id");
query.setParameter("name", "Pankaj Kumar");
query.setLong("id", 1);
int result = query.executeUpdate();
System.out.println("Employee Update Status="+result);
query = session.createQuery("from Employee");
empList = query.list();
for(Employee emp : empList){
System.out.println("List of Employees::"+emp.getId()+","+emp.getAddress().getCity());
}
//rolling back to save the test data
tx.rollback();
//closing hibernate resources
sessionFactory.close();
:
は、これは私のソースコードである
List of Employees::1,San Jose
List of Employees::2,Santa Clara
List of Employees::3,Bangalore
List of Employees::4,New Delhi
Hibernate: update EMPLOYEE set emp_name=? where emp_id=?
Employee Update Status=1
Hibernate: select employee0_.emp_id as emp_id1_1_, employee0_.emp_name as emp_name2_1_, employee0_.emp_salary as emp_sala3_1_ from EMPLOYEE employee0_
List of Employees::1,San Jose
List of Employees::2,Santa Clara
List of Employees::3,Bangalore
List of Employees::4,New Delhi
更新が正常に完了した場合でもトランザクションをロールバックするにはどうすればよいですか? – XtremeBaumer
@Tim Biegeleisenなぜあなたは 'tx.commit();'を選択した後、私はそれが更新後になるはずだと思いましたか? –
@XtremeBaumer OPを読んだとき、私はこの要件が表示されません。あなたのコメントを精緻化できますか? –