Java Oracle一致性—缓存中未反映数据更改

Java Oracle一致性—缓存中未反映数据更改,java,caching,oracle-coherence,Java,Caching,Oracle Coherence,我将Oracle Coherence cache与Java一起使用,遇到了一个问题。当我将某个对象放入缓存(如地图)并使用get调用将其取回,然后修改对象(例如,向地图添加值)时,修改后的值不会反映在缓存中。i、 如果我再次发出get,我将得到相同的旧对象。ehcache或dynacache不会出现这种情况 我知道我们可以将修改后的映射写回缓存,但我想知道我们是否可以在一致性配置xml中进行一些配置 示例代码: ConcurrentHashMap<String, String> my

我将Oracle Coherence cache与Java一起使用,遇到了一个问题。当我将某个对象放入缓存(如地图)并使用get调用将其取回,然后修改对象(例如,向地图添加值)时,修改后的值不会反映在缓存中。i、 如果我再次发出get,我将得到相同的旧对象。ehcache或dynacache不会出现这种情况

我知道我们可以将修改后的映射写回缓存,但我想知道我们是否可以在一致性配置xml中进行一些配置

示例代码:

ConcurrentHashMap<String, String> myMap = new ConcurrentHashMap<String, String>(); myMap.put("Hello", "World"); cache.put("myMap", myMap); ConcurrentHashMap<String, String> myExMap = (ConcurrentHashMap<String, String>)cache.get("myMap"); myExMap.put("Once", "More"); ConcurrentHashMap<String, String> myFinMap = (ConcurrentHashMap<String, String>) cache.get("myMap"); System.out.println(myFinMap); ConcurrentHashMap myMap=新的ConcurrentHashMap(); myMap.put(“你好”,“世界”); cache.put(“myMap”,myMap); ConcurrentHashMap myExMap=(ConcurrentHashMap)cache.get(“myMap”); myExMap.put(“一次”、“一次”); ConcurrentHashMap myFinMap=(ConcurrentHashMap)cache.get(“myMap”); System.out.println(myFinMap);
执行后,myFinMap仍然只有一个条目。

也许每次修改对象时都必须将其放入缓存(我猜是因为它已序列化?

必须将对象放回缓存。从一致性缓存中获取的对象未包装在一致性类中,该类将查找修改并与缓存同步