0

通过执行以下功能:

public void deleteByEntryId(long id)
{
    super.getSession().createSQLQuery("DELETE FROM guest WHERE entry_fk = " + id).executeUpdate();
}

Hibernate 的缓存会知道/通知 Guest 对象的删除吗?

  • 超类是 Spring 的 Hibernate 模板,它提供了方法getSession()和许多其他方法
  • createSQLQuery(...)` 是 Hibernate 的一个函数。

(我问我是按对象删除还是按 SQLquery 删除,我在测试中进一步得到 StaleState 或 OtimistickLockException。)

4

2 回答 2

2

要使 Guest 表缓存失效,您需要添加“addSynchronizedEntityClass”调用:

public void deleteByEntryId(long id)
{
  super.getSession()
         .createSQLQuery("DELETE FROM guest WHERE entry_fk = " + id)
         .addSynchronizedEntityClass(Guest.class)
         .executeUpdate();
}
于 2013-10-25T10:31:13.597 回答
-1

不,不会的。即使是 HQL 更新和删除查询也不会影响内存状态。

于 2012-08-09T14:47:29.490 回答