Hazelcast:门户序列化,具有相同类 ID 的不兼容类定义,版本 3.11.4

问题描述

我正在尝试将地图对象存储在 Hazelcast 缓存中,地图对象又包含一个键和一个对象,当我尝试将地图对象存储到 Hazelcast 缓存中时,出现以下错误,我在这里遗漏了什么吗?提前致谢。

原因:

com.hazelcast.nio.serialization.HazelcastSerializationException:具有相同类 ID 的不兼容类定义: ClassDefinition{factoryId=2,classId=127,version=6118,fieldDefinitions= [FieldDefinitionImpl{index=0,fieldName='fieldOne',type=PORTABLE_ARRAY,classId=130,factoryId=2,version=6118},FieldDefinitionImpl{index=1,fieldName='fieldTwo',type=UTF,classId=0,factoryId=0,FieldDefinitionImpl{index=2,fieldName='fieldThree',FieldDefinitionImpl{index=3,fieldName='fieldFour',FieldDefinitionImpl{index=4,fieldName='fieldFive',type=PORTABLE,classId=128,FieldDefinitionImpl{index=5,fieldName='fieldSix',type=LONG,version=6118}]}

VS

ClassDefinition{factoryId=2,字段定义=[ FieldDefinitionImpl{index=0,factoryIdxajo=2,classId=123,FieldDefinitionImpl{index=6,fieldName='fieldSeven',version=6118}]}

我发现其中一个字段丢失,但我正在使用 write Portable 方法填充所有字段。只为类 Id 127 创建了一个类定义

解决方法

看起来您使用了不同的属性名称。比较您在上面发布的两条消息并查找以下内容:

{factoryId=2,classId=127,version=6118,fieldDefinitions=[ FieldDefinitionImpl{index=0,fieldName='fieldOne',type=PORTABLE_ARRAY,classId=130,factoryIdxajo=2,版本=6118},

,

我看到的一个常见问题(错误)是 readPortable 和 writePortable 使用不同的字段名称。你能发布你的便携式实现吗?

在下一个版本中应该是 GA 的当前测试版功能是使用便携式序列化时的通用记录,可能会引起兴趣:

https://hazelcast.com/blog/hazelcast-imdg-4-1-ga-is-released/

https://docs.hazelcast.org/docs/4.1/manual/html-single/index.html#accessing-domain-objects-without-domain-classes

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...