You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Hazelcast中User类的Map属性创建SQL映射?

解决方案

针对你的场景,要在SQL映射中支持查询customAttributes这个Map类型字段,只需在CREATE MAPPING语句里添加对应字段,并指定正确的Map类型声明即可——Hazelcast SQL原生支持Compact序列化下的复杂类型(包括Map)。

修改后的映射创建语句

CREATE OR REPLACE EXTERNAL MAPPING "hazelcast"."public"."user" 
EXTERNAL NAME "user" (
  "name" VARCHAR,
  "customAttributes" MAP(VARCHAR, VARCHAR)
) 
TYPE "IMap" OPTIONS (
  'keyFormat' = 'java',
  'keyJavaClass' = 'java.lang.Long',
  'valueFormat' = 'compact',
  'valueCompactTypeName' = 'my.package.User'
)

关键说明

  • 对于Java中的Map<String, String>类型字段,Hazelcast SQL对应的类型是MAP(VARCHAR, VARCHAR),括号内的参数分别对应Map键和值的SQL类型。
  • 必须确保User类已正确注册Compact序列化:可以通过在类上添加@Compact注解(Hazelcast 5.0+支持),或手动通过CompactSerializationConfig注册序列化器,否则SQL引擎无法识别该字段结构。

执行查询

完成映射创建后,即可直接执行目标查询:

SELECT customAttributes FROM user;

如果需要查询Map中的具体键值对,还可以使用Hazelcast的Map索引语法:

-- 获取customAttributes中key为"age"的值
SELECT customAttributes['age'] FROM user;

内容的提问来源于stack exchange,提问作者Eugene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:32:33