2013-05-30 70 views
0

我在Hibernate 3.2中創建了一個應用程序,並在使用memcached的實體上進行了二級緩存。休眠第二級緩存未得到更新

我面臨的問題是,一旦實體已被緩存,如果我更新緩存的任何實體項目,它不會被更新。

我的用例是: Steve的兒子名字叫Jon。

現在,我從數據庫中加載Steve的實體,同時我還得到了他的兒子的實體,即Jon。但是當我將Jon的名字更新爲'Marc'時,同樣的改變不會在我再次加載具有Steve的實體時反映出來。

我認爲memcached已經緩存了,當我更新它時,實體不會刷新。

我需要在更改時更新此實體,即每當實體有任何字段更新時,同一個實體將在更新中刷新到高速緩存中。

請幫忙。謝謝:)

+0

你能分享一些代碼嗎? – orique

回答

0

如果更新是通過nHibernate執行的,緩存將被更新,如果它是在nHibernate之外完成的(例如通過數據庫直接),那麼nHibernate將不會意識到更改,因此當您從緩存中重新加載時將不會有任何更新的值。

如何更新名稱?

+0

我直接通過觸發數據庫查詢來更新名稱,並且我的要求僅限於此,如果有任何更新從Hibernate外部發生,我希望緩存檢測到該更改。 – gauravmuk