我在Hibernate 3.2中创建了一个应用程序,并使用memcached对我的实体进行了二级缓存。
我面临的问题是,一旦实体被缓存,如果我更新任何缓存的实体项目,它就不会被更新。
我的用例是: 史蒂夫的儿子名叫乔恩。
现在,我从数据库中加载了Steve的实体,同时我得到了他儿子的实体,也就是Jon。但是当我对Jon的名字更新为'Marc'时,当我再次加载拥有Steve的实体时,相同的更改不会得到反映。
我认为memcached已将其缓存,当我更新它时,实体不会刷新。
我需要在更改时更新此实体,即,只要实体有任何字段更新,就会在缓存中使用更新刷新相同的实体。
请帮忙。谢谢:))
答案 0 :(得分:0)
如果通过nHibernate执行更新,缓存将更新,如果它是在nHibernate之外完成的(例如通过数据库直接),那么nHibernate将不会知道更改,因此当您从缓存重新加载时它将不会有任何更新更新值。
您如何更新名称?