您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JOOQ如何根据其他列值转换JSON?

JOOQ如何根据其他列值转换JSON?

您显然不能以类型安全的方式执行此操作,因为您的preferences列的类型将是Field<RegularCustomerPreferences | PremiumCustomerPreferences>(联合类型),并且Java当前不支持联合类型。因此,也许可以将通用的CustomerPreferences超类型绑定到该列,然后在使用该值的任何地方向下转换该值。

绑定超级类型应该相对容易。您将实现一个Binding<Object, CustomerPreferences>可同时处理RegularCustomerPreferencesPremiumCustomerPreferences值的。具体来说,您的转换器看起来像这样:

public Converter<Object, CustomerPreferences> converter() {
    return new Converter<Object, CustomerPreferences>() {
        @Override
        public CustomerPreferences from(Object t) {
            if (some check here to see if this is a regular customer)
                return new RegularCustomerPreferences(t);
            else
                return new PremiumCustomerPreferences(t);
        }

        @Override
        public Object to(CustomerPreferences u) {
            return MyJSONTools.toJSON(u);
        }

        @Override
        public Class<Object> fromType() {
            return Object.class;
        }

        @Override
        public Class<CustomerPreferences> toType() {
            return CustomerPreferences.class;
        }
    };
}

这里的假设是,您的JSON内容允许您决定JSON文档应具有的类型,并与type列重复,因为当前,从版本3.11和3.12开始,jOOQ不支持读取多个字段的多列数据类型绑定值作为其数据类型转换决策的基础。这是与以下相关的待定功能https ://github.com/jOOQ/jOOQ/issues/6124

其他 2022/1/1 18:29:30 有451人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶