0
即使在刪除對象後,我可以加載它並打印它的Id,這似乎很荒唐。這裏是我用來從實體教授檢索數據的類:休眠:對象已刪除,但仍然可以通過休眠加載
public class ProfCrud {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session ;
public ArrayList<Object> findProfByProfId(int id){
session = sessionFactory.openSession();
Query Q = session.getNamedQuery("findProfByProfId");
Q.setLong("id", id);
List<Object> objet = Q.list();
session.close();
return (ArrayList<Object>) objet;
}
public void deleteProfByProfId(int id){
ProfCrud pc= new ProfCrud();
session = sessionFactory.openSession();
session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Prof c = (Prof) pc.findProfByProfId(id).get(0);
session.delete(c);
transaction.commit();
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
System.out.println(((Prof) pc.findProfByProfId(id).get(0)).getId());
}
}
您的外部範圍(您打印教授ID的範圍)是否有交易?是否有可能看到可重複讀取隔離的結果? – Pace
我不認爲是這種情況,我試圖將其打印出來,並且無論如何都給出了結果。 – GSDa
外面的方法是在任何外部事務或會話之外是否正確? findProfByProfId使用的會話在哪裏創建? – Pace