如何解决如何将 postgresql jsonb 映射到 java 对象 r2dbc
我在 postgreSql 中有一个带有表 pc_customer 的实体映射。 我在将字段 jsonb 从 postgreSql 映射到 Java 中的 Object 时遇到问题,使用 R2DBC。这是我的代码:
@EqualsAndHashCode(callSuper = false)
@Data
@Builder
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Table("pc_customer")
public class Customer extends KunlunDomain {
@Id
private Long id;
private String secret;
private String code;
@Column(value = "customer_authorities")
CustomerAuthorities customerAuthorities;
String zaloId;
@Data
@Builder
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public static class CustomerAuthorities implements Serializable {
boolean importParcel = false;
boolean printParcelStamp = false;
boolean draftServicesEnable = true;
}
}
这是我收到的错误 **引起:org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型 [io.r2dbc.postgresql.codec.Json$JsonByteArrayInput] 转换为类型 [*com.example.Customer$CustomerAuthorities 的转换器]
customer_authorities 列是 jsonb。 那么在这种情况下我该怎么做才能将 jsonb 映射到一个类呢? 对不起我的英语
解决方法
创建BiFunctional Row Mapper,用于用java对象[On Repository]映射DB行
示例 -
@Autowired
private DatabaseClient databaseClient;
@Autowired
private ObjectMapper objectMapper
public static final BiFunction<Row,RowMetadata,Customer> customerRowMapper = (row,rowMetadata) -> Customer.builder()
// ...rest of the field
// call your setter fun here
.customerAuthorities(objectMapper.readValue(row.get("customer_authorities",String.class),Customer.CustomerAuthorities.class))
.build();
public Flux<Customer> getAllCustomer() {
return databaseClient
.sql("YOUR SQL QUERY")
.map(customerRowMapper) // here will call the biFunctional row mapper
.all();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。