gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 15:57:11 24 4
gpt4 key购买 nike

我正在使用 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_INCRMENT 指令。但是,SERIAL 在 PostgreSQL 中表示 UNSIGNED INT,在 MySQL 中表示 UNSIGNED BIGINT,导致 DbUtils BeanHandler 中转换失败。此外,apikey_enabled 在 PostgreSQL 中失败,但在 MySQL 中则不然。它在 MySQL 中将其视为 boolean 值,而 PostgreSQL 则尝试将其转换为 int。

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

最佳答案

您不必按照以下方式在 PostgreSQL 中使用 SERIAL:

https://stackoverflow.com/a/6632280

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

关于java - 对象序列化期间的DbUtils类型转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56396870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com