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

Trino中CAST AS ROW字段名大小写不敏感映射问题求助

问题描述

我使用以下Trino SQL语句查询数据:

select
    cast (cast("cf00a399af"."2be9fc3823" as json) as row(cityId bigint, city varchar)) as 
    address,
    count(0) as num
from  ygg_dev."913852142333198336" cf00a399af
group by "cf00a399af"."2be9fc3823"

查询结果如下:

addressnum
{cityid=44, city=石家庄市}1
{cityid=23, city=天津市}1
{cityid=1318, city=泉州市}1
{cityid=0, city=}9
{cityid=1274, city=福州市}1
{cityid=1318, city=泉州市}1
{cityid=2, city=北京市}1
{cityid=1318, city=泉州市}2

结果中的字段为小写的cityid,但我需要实现大小写不敏感匹配,使其对应Java实体类中的cityId属性,该如何处理?

对应的Java实体类:

@Data
public class AddressInputValue implements java.io.Serializable{

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("省ID")
    private long provinceId;

    @ApiModelProperty("省名称")
    private String province;

    @ApiModelProperty("市ID")
    private long cityId;

    @ApiModelProperty("市名称")
    private String city;

    @ApiModelProperty("县ID")
    private long countyId;

    @ApiModelProperty("县名称")
    private String county;

    @ApiModelProperty("详细地址")
    private String address;

    @ApiModelProperty("经纬度坐标")
    private MapPoint point;
}
解决方法

方案1:修改SQL,显式匹配字段名

拆分JSON字段提取逻辑,直接指定与Java属性一致的字段别名:

select
    row(
        cast(json_extract_scalar("cf00a399af"."2be9fc3823", '$.cityid') as bigint) as cityId,
        json_extract_scalar("cf00a399af"."2be9fc3823", '$.city') as city
    ) as address,
    count(0) as num
from  ygg_dev."913852142333198336" cf00a399af
group by "cf00a399af"."2be9fc3823"

这样查询结果中address结构体的字段就是cityId,与Java实体类属性完全匹配。

方案2:Java全局配置大小写不敏感映射

如果使用Jackson作为JSON处理框架,可开启全局大小写不敏感匹配:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

Spring Boot项目可直接在配置文件中全局配置:

spring.jackson.mapper.accept-case-insensitive-properties=true

配置后框架会自动忽略字段名大小写,将cityid映射到cityId属性。

方案3:字段级注解指定映射

在cityId字段上添加@JsonProperty注解,明确指定匹配的小写字段名:

@ApiModelProperty("市ID")
@JsonProperty("cityid")
private long cityId;

该方式仅针对单个字段生效,映射关系更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:10:22