有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对象序列化期间的java DbUtils类型转换问题

我使用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,这导致DbUtilsBeanHandler中的转换失败。此外,apikey_enabled在PostgreSQL中失败,但在MySQL中失败。当PostgreSQL试图转换为int时,它在MySQL中将其视为布尔值

我在这里不知所措。当尝试标准化模式时,最佳实践是什么?我是否应该避免DbUtils对象映射,而坚持手动设置这些值的更繁琐(尽管控制更多)的方法


共 (1) 个答案