2013-05-30 36 views
0

我在Hibernate 3.2中创建了一个应用程序,并在使用memcached的实体上进行了二级缓存。休眠第二级缓存未得到更新

我面临的问题是,一旦实体已被缓存,如果我更新缓存的任何实体项目,它不会被更新。

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

现在,我从数据库中加载Steve的实体,同时我还得到了他的儿子的实体,即Jon。但是当我将Jon的名字更新为'Marc'时,同样的改变不会在我再次加载具有Steve的实体时反映出来。

我认为memcached已经缓存了,当我更新它时,实体不会刷新。

我需要在更改时更新此实体,即每当实体有任何字段更新时,同一个实体将在更新中刷新到高速缓存中。

请帮忙。谢谢:)

+0

你能分享一些代码吗? – orique

回答

0

如果更新是通过nHibernate执行的,缓存将被更新,如果它是在nHibernate之外完成的(例如通过数据库直接),那么nHibernate将不会意识到更改,因此当您从缓存中重新加载时将不会有任何更新的值。

如何更新名称?

+0

我直接通过触发数据库查询来更新名称,并且我的要求仅限于此,如果有任何更新从Hibernate外部发生,我希望缓存检测到该更改。 – gauravmuk