clickhouse的nested嵌套结构如何映射Java实体类?

假如clickhouse中有如下一张表结构

CREATE TABLE `member`
(
    `uid` Int32 COMMENT 'uid',
    `branch` Nested (
        `subject` String ,
        `fraction` UInt8
        ) COMMENT '分数',
     `hobby`  Nested (
        `subject` String ,
        `rank` UInt8
        ) COMMENT '爱好'
) ENGINE = MergeTree
      ORDER BY (uid)
      PRIMARY KEY uid;

插入一条数据

INSERT into member (uid, branch.subject, branch.fraction, hobby.subject, hobby.rank) values (1, ['语文', '数学', '英语'], [90, 100, 88], ['打球', '唱歌'], [1, 2]);

对应的Java实体类如下(按我的理解应该是这个结构)

/**
 * Member实体
 */
public class Member {
    private Integer uid;
    private List<Branch> branch;
    private List<Hobby> hobby;
}

/**
 * Branch实体
 */
public class Branch {
    private String subject;
    private Integer fraction;
}

/**
 * Hobby实体
 */
public class Hobby {
    private String subject;
    private Integer rank;
}

我想在确保表结构不变的情况下,映射到Java实体类中数据的结构应该是下面这样

[
    {
        uid: 1,
        branch: [
            {
                subject: "语文",
                fraction: 90
            },
            {
                subject: "数学",
                fraction: 100
            },
            {
                subject: "英语",
                fraction: 88
            }
        ],
        hobby: [
            {
                subject: "打球",
                rank: 1
            },
            {
                subject: "唱歌",
                rank: 2
            }
        ]
    }
]

我该如何在mybatis或者通过其他方法将clickhouse的nested结构的数据映射到如上结构的数据呢?

阅读 4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题