假设我有一个表customer(int id,类型varchar,首选项jsonb)。类型可以是regular
、premium
等。根据列类型值,首选项JSON结构将有所不同。
在从数据库加载客户记录时,如果type=regular我希望将其转换为regularcustomerpreferences
对象类型,如果type=premium我希望将其转换为premiumcustomerpreferences
对象类型。
我已经阅读了几篇关于使用JOOQ JSON转换器/绑定的教程。但是它们是一对一映射,不是基于条件的(取决于另一个列值)。
显然不能以类型安全的方式这样做,因为preferences
列的类型应该是字段
(联合类型),而且Java目前不支持联合类型。因此,您可能可以将一个公共CustomerPreferences
超级类型绑定到列,并在使用该值的任何地方向下显示该值。
绑定超级类型应该相对容易。您将实现绑定
,它可以处理regularcustomerpreferences
和premiumcustomerpreferences
值。具体地说,您的转换器如下所示:
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内容允许通过type
列冗余地决定JSON文档应该具有什么类型,因为目前,从3.11和3.12版本开始,jOOQ不支持多列数据类型绑定,这些绑定读取几个值以作为数据类型转换决策的基础。这是一个挂起的特性,与以下内容相关:https://github.com/jooq/jooq/issues/6124
问题内容: 假设我有一个表 customer(int id,类型varchar,首选项jsonb) 。的 类型 可以是,基于该列类型值偏好JSON结构将是不同的等等。 从数据库加载客户记录时,如果 type = REGULAR, 我想将其转换为对象类型,如果 type = PREMIUM, 我想将其转换为对象类型。 我已经看过几本有关使用JOOQ JSON转换器/绑定的教程。但是它们是一对一的映射
我有一个数据帧(df),看起来像这样: 现在,我的目标是,对于列中的每个,应将列中关联的-值替换为字符串。 到目前为止我做了什么 我偶然发现了,它替换了每个(这不是我要找的),缺少值和,这似乎是我想要的,但不起作用。此外,我尝试了这个: 缺少索引或某种迭代器来访问列中的等效值 我试过这个: 这显然不起作用。 我看了几个问题,但不能基于答案中的建议。布莱克的问题西蒙的问题szli的问题扬·威廉斯·图
假设我有一个名为mytable的表,它看起来像这样: 我希望能够更新所有的记录在p6列添加到39但只为行有不同的p2值。换句话说,结果表应该如下所示: 我将p6行着色为黄色,以显示它不应该移动的地方,因为所有的p2单元格都是灰色的,它们的值是相同的。绿色的p6行应该会增长,因为p2也会增长,所以我把+39加到所有的行上。示例中的最后第13行再次为黄色,因为12行上的p2=13行上的p2。 在Gor
我正在寻找一种解决方案,使用Jackson基于同一POJO中的其他属性值序列化POJO对象属性 如果某个属性值符合某些条件,则应根据要求更改其他属性值 例如,下面是我的JSON对象: 在上述情况下,如果的值符合某些条件,那么我应该能够更改的值 为什么需要这样做: 是一个配置对象 和-是配置设置 在上面的例子中,中有一个是,我需要屏蔽/更改相应的 还要补充一点,在这个例子中,属性是和,但是如果我们找
我有一个表,它有4列()gender具有与每个客户链接的唯一值:、或。 该部门与每种产品(男性或女性)都有独特的价值 我做了一个复杂的过程。首先,使用客户信息将male和其他客户分开(创建了两个表CUST_MALEY和cust_other) 如果CUST_MALEY表中有客户,则使用join,返回men division products行(其中division='men');如果cust_oth
本文向大家介绍根据MySQL中其他两个列的值来匹配列的值,包括了根据MySQL中其他两个列的值来匹配列的值的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是根据ID和MatchID显示FirstName的查询- 这将产生以下输出-