如何使用Hazelcast为两个不同的应用程序设置Hibernate二级缓存,使用不同的软件包名称和实体名称

如何使用Hazelcast为两个不同的应用程序设置Hibernate二级缓存,使用不同的软件包名称和实体名称,hibernate,hazelcast,second-level-cache,java-custom-serialization,Hibernate,Hazelcast,Second Level Cache,Java Custom Serialization,我使用Hazelcast作为hibernate的2L缓存提供程序。 我的问题是,我试图使用可移植序列化,但在默认情况下,当应用程序工作时,它使用hazelcast.hibernate.region包中的CacheKeyImpl类进行密钥序列化。如何禁用这种序列化方式 CacheKeyImpl包含私有字符串entityOrRoleName;字段,它存储实体的完整路径,这就是为什么我不能将Hazelcast缓存设置为对两个不同的应用程序正常工作(因为在处理DB的不同项目中,实体的路径不同,所以同一实

我使用Hazelcast作为hibernate的2L缓存提供程序。 我的问题是,我试图使用可移植序列化,但在默认情况下,当应用程序工作时,它使用hazelcast.hibernate.region包中的CacheKeyImpl类进行密钥序列化。如何禁用这种序列化方式


CacheKeyImpl包含私有字符串entityOrRoleName;字段,它存储实体的完整路径,这就是为什么我不能将Hazelcast缓存设置为对两个不同的应用程序正常工作(因为在处理DB的不同项目中,实体的路径不同,所以同一实体的键在序列化后具有不同的值)。有人面临类似的问题吗?提前谢谢

我发现我使用了hazelcast-hibernate52版本1.2,在我的pom文件中将这个版本设置为1.2.3之后,一切都变好了。对不起,我弄错了。将hazelcast hibernate版本设置为1.2.3之后,只有一个键更改了它的格式,现在它看起来像com.myproject.backoffice.entity.Currency#2,但问题仍然存在。由于密钥包含完整路径,我无法组合具有不同软件包名称的两个平台,并且自定义序列化无法工作,我不知道原因。我不知道Hazelcast集成是否支持该选项,但使用Infinispan 2LC提供程序,您可以将
hibernate.cache.keys\u factory
设置为
simple
(而不是默认值)然后您将直接使用
@Id
作为缓存中的键。顺便说一句,如果您能确保使用Hibernate 5.3,请检查。5.2版不会得到太多维护。Radim,谢谢您的回答,但是对于Hazelcast,作为提供程序,Hibernate还不支持Hibernate.cache.keys\u工厂。不幸的是,Hazelcast不支持Hibernate.cache.keys\u工厂snt也处理Hibernate 3.x.x。