微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。