0
所以我使用Hibernate在列表中從我的數據庫獲取的行數:更新會話
public class FlightDAOImpl implements FlightDAO {
private Session session = HibernateUtil.getSessionFactory().openSession();
@SuppressWarnings("unchecked")
@Override
public List<Flight> listFlight() {
List<Flight> list = new ArrayList<>();
session.beginTransaction();
list = session.createQuery("FROM Flight WHERE Flight_Origin = :origin_id OR Flight_Destination = :destination_id")
.setParameter("origin_id", App.airport.getAirportId())
.setParameter("destination_id", App.airport.getAirportId())
.list();
session.getTransaction().commit();
return list;
}
}
它的工作原理,但我如果我更新表中的一些數據(來自像SQL開發人員)會話將不會更新我將在下次調用listFlight()時獲得相同的數據。 我可以用這個來代替:
public List<Flight> listFlight() {
List<Flight> list = new ArrayList<>();
Session s = HibernateUtil.getSessionFactory().openSession();
s.beginTransaction();
list = s.createQuery("FROM Flight WHERE Flight_Origin = :origin_id OR Flight_Destination = :destination_id")
.setParameter("origin_id", App.airport.getAirportId())
.setParameter("destination_id", App.airport.getAirportId())
.list();
s.getTransaction().commit();
s.close();
return list;
}
,但將要求我關閉會話,每次打開它時調用listFlight()。有沒有辦法強制更新整個會話數據而不關閉並重新打開它?我是一個新手,所以任何意見將不勝感激。
使用getCurrentSession()而不是openSession()。 – 2014-11-05 06:17:13
@Sachin Verma非常感謝你,這正是我想要的:) – Lexx 2014-11-05 10:55:27
@SachinVerma你可以發表你的評論作爲答案。 – 2014-11-06 17:30:49