gpt4 book ai didi

java - 使用 JDBI3 保留枚举字段的简洁方法?

转载 作者:行者123 更新时间:2023-12-05 07:30:58 28 4
gpt4 key购买 nike

我正在使用 Dropwizard 构建一个应用程序,我希望我的持久实体之一有一个枚举字段:

class DogEntity {
public String name;
public DogType type;
}

enum DogType {
HUSKY("canis lupus familiaris"),
LAB("canus familiaris")

private final String value;

Type(String value) {
this.value = value;
}
}

我怎样才能让 JDBI 将 DogType 的保存到数据库中,而不是名称或序号?

最佳答案

开箱即用,Jdbi 3 支持枚举作为参数类型,但它存储为枚举值的名称。

但是,您可以使用 Custom Arguments对于 Jdbi 本身不支持的数据类型。

您的案例的参数工厂示例是:

public class DogTypeArgumentFactory extends AbstractArgumentFactory<DogType> {

public DogTypeArgumentFactory() {
super(Types.VARCHAR);
}

@Override
public Argument build(final DogType dogType, ConfigRegistry config) {
return new Argument() {
@Override
public void apply(int position, PreparedStatement statement, StatementContext ctx) throws SQLException {
statement.setString(position, dogType.getValue());
}
};
}
}

关于java - 使用 JDBI3 保留枚举字段的简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52009523/

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