【问题标题】:DbUtils type conversion issue during object serialization对象序列化期间的 DbUtils 类型转换问题
【发布时间】:2019-10-17 05:00:45
【问题描述】:

我正在使用 DbUtils 来处理 PostgreSQL 和 MySQL 之间的互换性。我有点期望这是一个问题,但希望有一种干净的方式来处理类型转换。我正在使用 Flyway 进行迁移,因此我必须尽可能标准地编写架构以支持它支持的所有不同类型的关系数据库,其中 PostgreSQL 和 MySQL 是主要关注点(目前)。

这是我正在使用的基本架构:

CREATE TABLE access (
  id SERIAL PRIMARY KEY,
  apikey varchar(36) NOT NULL,
  apikey_type int DEFAULT '0',
  apikey_enabled smallint DEFAULT '1',
  topicid int DEFAULT NULL,
  collection varchar(60) DEFAULT NULL,
  lastseen timestamp NULL DEFAULT NULL,
);

这是 POJO 类的样子:

public class ClientAccessRecord {

    private BigInteger id;

    private Integer apiKeyType;

    private boolean enabled;

    private String topic;

    private int topicId;

    private String lastRecordTime;

    private int lastRecordId;

    private String collection;
}

我在两个领域苦苦挣扎:idapikey_enabled。我已将id 指定为SERIAL,因为PostgreSQL 不支持AUTO_INCREMENT 指令。但是,SERIAL 在 PostgreSQL 中表示 UNSIGNED INT,在 MySQL 中表示 UNSIGNED BIGINT,导致在 DbUtils BeanHandler 中转换失败。此外,apikey_enabled 在 PostgreSQL 中失败,但在 MySQL 中没有。它在 MySQL 中将其视为布尔值,而 PostgreSQL 正在尝试转换为 int。

我在这里不知所措。尝试标准化架构时的最佳实践是什么?我是否应该避免 DbUtils 对象映射并坚持手动设置这些值的更繁琐但更可控的方法?

【问题讨论】:

    标签: java mysql postgresql flyway apache-commons-dbutils


    【解决方案1】:

    你不必在 PostgreSQL 中使用SERIAL

    https://stackoverflow.com/a/6632280

    这意味着您可以使用任何数据类型...

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多