在以下情况下,集合成员的序列化失败: -成员基于公共接口,但是实现可能有所不同,并且 -序列化过程中成员的顺序是不确定的。
问题可以归结为以下事实:如果集合(例如List)先包含Type-A,然后包含Type-B(均实现公共接口Int-1),则操作map.put(“ list” ,列表)工作正常。 当序列化第二个包含具有Type-B和Type-A的List的实例时,序列化失败,但出现以下异常: 引起原因:com.hazelcast.nio.serialization.HazelcastSerializationException:错误的可移植类型!不支持通用的可移植类型!期望的班级ID:1,实际班级ID:2
第一次进行序列化(map.put操作)后,A型和B型的顺序似乎已固定
演示代码包含带有和不带有泛型的版本。 两种变体都会产生相同的错误。
在GitHub上有一个示例项目:https://github.com/trackitecture/hz-portable-ser-test
我正在寻找以下解决方案: a)可以按随机顺序序列化集合成员 b)可以被索引(如便携式) c)可以查询(如便携式) d)查询时不需要反序列化(如便携式)
我知道我可能无法拥有全部。我肯定需要一个)。
如果有可能使用Portable创建一个“集合”条目,从而允许无序插入Portable,例如JSON / BSON中的括号,则将有所帮助。
谢谢