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

发布于 2022-09-12 22:31:37 字数 1606 浏览 24 评论 0

假如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结构的数据映射到如上结构的数据呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文