- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Hazel 将 IMDG 字符串转换为 HazelcastJsonValue 转换未发生。
问题声明 - 将 json 作为字符串格式存储在 HazelCast IMDG 中。使用 HazelcastJsonValue 检索..遇到异常
请帮忙解决问题。
如果HazelcastJsonValue
对象存储在hazelcast IMDG中..它正在工作。但是 String
到 HazelcastJsonValue
不起作用。出现以下异常:
Exception in thread "main" com.hazelcast.query.QueryException: java.lang.IllegalArgumentException: There is no suitable accessor for 'age' on class 'java.lang.String'
at com.hazelcast.query.impl.getters.ReflectionHelper.createGetter(ReflectionHelper.java:171)
at com.hazelcast.query.impl.getters.Extractors.instantiateGetter(Extractors.java:152)
at com.hazelcast.query.impl.getters.Extractors.getGetter(Extractors.java:118)
at com.hazelcast.query.impl.getters.Extractors.extract(Extractors.java:73)
public static void main(String args[]) {
HazelcastInstance instance = com.hazelcast.core.Hazelcast.newHazelcastInstance(config());
String person1 = "{ \"name\": \"John\", \"age\": 35 }";
String person2 = "{ \"name\": \"Jane\", \"age\": 24 }";
String person3 = "{ \"name\": \"Trey\", \"age\": 17 }";
//Storing as String
IMap<Integer, String> idPersonMap = instance.getMap("jsonValues");
idPersonMap.put(1, person1);
idPersonMap.put(2, person2);
idPersonMap.put(3, person3);
//Retrieving as HazelcastJsonValue
IMap<Integer, HazelcastJsonValue> idPersonMapRead = instance.getMap("jsonValues");
Collection<HazelcastJsonValue> peopleUnder21 = (Collection<HazelcastJsonValue>) idPersonMapRead.values(Predicates.lessThan("age", 50));
System.out.println( "-------------------Result--------------------");
System.out.println( peopleUnder21.stream().collect(Collectors.toList()));
}
public static Config config(){
Config config = new Config();
config.setInstanceName("hazelcast-instance")
.addMapConfig(
new MapConfig().setMetadataPolicy(MetadataPolicy.OFF)
.setName("configuration")
.setMaxSizeConfig(new MaxSizeConfig(200, MaxSizeConfig.MaxSizePolicy.FREE_HEAP_SIZE))
.setEvictionPolicy(EvictionPolicy.LRU)
.setTimeToLiveSeconds(-1));
return config;
}
最佳答案
您将String
实例放入IMap
中。不要期望 get
操作返回 HazelcastJsonValue
实例。它将再次成为String
。
当你调用方法get
时,它不知道你的目标通用类型。为了方便用户,Hazelcast 不返回原始类型,但它在底层进行未经检查的转换。
如果您想在 put 内进行自动值转换操作,您可以使用 MapInterceptor
例如:
IMap<Integer, String> idPersonMap = instance.getMap("jsonValues");
idPersonMap.addInterceptor(new ConvertOnPutMapInterceptor());
private static class ConvertOnPutMapInterceptor implements MapInterceptor {
@Override
public Object interceptGet(Object value) {
return value;
}
@Override
public void afterGet(Object value) {
}
@Override
public Object interceptPut(Object oldValue, Object newValue) {
return new HazelcastJsonValue((String) newValue);
}
@Override
public void afterPut(Object value) {
}
@Override
public Object interceptRemove(Object removedValue) {
return null;
}
@Override
public void afterRemove(Object value) {
}
}
关于java - Hazelcast IMDG 字符串到 HazelcastJsonValue 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57588681/
我读过 CAP 定理和 NoSQL 数据最终一致性问题。据我了解,您可以实现完全一致性或完全可用性,但不能同时实现。因此,如果您获得更高的性能,您可能会得到陈旧的数据/部分交易。据我了解,目前还没有针
我有一些 IMDG 经验,我对 KAFKA 比较陌生。我想了解 Kafka 的用例。我知道这是一个流媒体/消息传递平台。它的许多问题在现代内存数据网格中都有一些对立部分。当有人更喜欢使用 Kafka
我需要一份如何在 Ubuntu Server 中安装 Hazelcast IMDG 的指南。 我已经安装了 DeviceHive 框架的组件: PostgreSQL 9.1 或更高版本。 Apache
Hazel 将 IMDG 字符串转换为 HazelcastJsonValue 转换未发生。 问题声明 - 将 json 作为字符串格式存储在 HazelCast IMDG 中。使用 Hazelcast
根据要求,我必须使 WebApp session 在 WildFly 18 上集群。 我使用Spring session 来管理集群和过滤以及Spring Security。 WebApp 使用 JS
我是一名优秀的程序员,十分优秀!