问题描述
我正在尝试将地图对象存储在 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/