您显然不能以类型安全的方式执行此 *** 作,因为您的
preferences列的类型将是
Field<RegularCustomerPreferences |PremiumCustomerPreferences>(联合类型),并且Java当前不支持联合类型。因此,也许可以将通用的
CustomerPreferences超类型绑定到该列,然后在使用该值的任何地方向下转换该值。
绑定超级类型应该相对容易。您将实现一个
Binding<Object,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内容允许您决定JSON文档应具有的类型,并与
type列重复,因为当前,从版本3.11和3.12开始,jOOQ不支持读取多个字段的多列数据类型绑定值作为其数据类型转换决策的基础。这是与以下相关的待定功能:https
:
//github.com/jOOQ/jOOQ/issues/6124
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)