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” –