Tag
是一個實體,我刪除帶有這種方法:休眠:選擇後刪除認定已刪除對象第一次
public static List<Tag> listTags() {
Session session = HibernateUtil.getSessionFactory().openSession();
Query q = session.createQuery("FROM Tag tag");
List<Tag> tags = (List<Tag>) q.list();
session.close();
return tags;
}
:
public static <T> boolean deleteById(Class<? extends BaseEntity> clazz, Long id) {
Session session = HibernateUtil.getSessionFactory().openSession();
try {
session.beginTransaction();
T e = get(clazz, id);
if (e != null) {
session.delete(e);
session.getTransaction().commit();
return true;
} else {
return false;
}
} finally {
session.close();
}
}
接下來的事情,我用這種方法再次讀取標籤列表
問題是,當刪除和重新選擇所有標籤時,刪除的標籤在列表中,但不在數據庫中。當我第二次運行listTags()時,通過單擊一個鏈接,該對象被刪除,我得到正確的列表。 有誰知道爲什麼?
請清楚一點,我 - 時當您在列表中看到已刪除項目還在,這是 ?它是在重新查詢之後,還是你在突破或其他事情之後。這將有助於確定發生了什麼。 – jr593
如何在刪除後添加'session.flush()'? – jpkrohling
Abdelhak解決了它。 @ jr593首先我刪除然後打開一個新的會話,並用HQL讀取整個Tag列表:「FROM Tag tag」 –