首页 > 解决方案 > 具有不同字段数的条目

问题描述

我想缓存具有不同字段的数据。

我正在向 IMap 添加一个条目,其中值是一个 Map,但是当我尝试使用 Predicates 搜索 Map 中的值时,我在 ReflectionHelper 中遇到错误。

(我正在使用 Spring JDBC 模板从其中一列是 BLOB 的 DB 表中加载数据,然后将 Map 放入缓存中)

有没有一种模式/方法可以用来缓存值的映射,然后搜索映射中的值?也许我应该使用 MultiMap ,其中值是具有名称/值对的元组?

Caused by: java.lang.IllegalArgumentException: There is no suitable accessor for '['CURRENCY']' on class 'class org.springframework.util.LinkedCaseInsensitiveMap'
at com.hazelcast.query.impl.getters.ReflectionHelper.createGetter(ReflectionHelper.java:192)
at com.hazelcast.query.impl.getters.ReflectionHelper.extractValue(ReflectionHelper.java:209)

标签: hazelcast

解决方案


请检查这个例子:https ://github.com/hazelcast/hazelcast-code-samples/tree/master/distributed-map/custom-attributes/src/main/java/com/test/car/attribute

您需要做的是创建一个通用值提取器,它可以从给定对象中提取值,在您的案例映射中,并在查询时使用它。

在此示例中, Car 类具有 map 属性,但同样也可以在没有包装类的情况下工作。


推荐阅读