gpt4 book ai didi

java - 具有 Mysql JSON 类型的 Spring Data

转载 作者:可可西里 更新时间:2023-11-01 08:10:00 25 4
gpt4 key购买 nike

我们在项目中使用带有 JPA 的 spring 数据。MySQL 服务器版本为 5.7。

我有两个问题:

1) spring 数据是否兼容将对象持久化为 MySQL 数据库上的新 JSON 类型?换句话说,我想要一个实体,而不是在其表中包含多个列——它将包含一个 JSON 类型的列。

2) spring 数据存储库是否与这种机制兼容?例如(通过存储库接口(interface)为 CRUD 操作自动生成代码)?

最佳答案

根据Spring Data Docs Appendix D: Repository query return types , 唯一支持的类型是:void, primitives, Wrapper types, T, Iterator, Collection, List, Optional, Stream, Future, CompletableFuture, ListenableFuture, Slice, Page, GeoResult, GeoResults, GeoPage。

如您所见,目前尚不支持它。其背后的一个想法我认为这还不是所有数据库的常识。

显然,您可以将此存储用作 Json,并为其创建一个转换器:

  @Column(name = "configuration", nullable = false)
@Convert(converter = PluginAnalyzerConfigConverter.class)
private PluginAnalyzerConfig configuration;

和:

public class PluginAnalyzerConfigConverter implements
AttributeConverter<PluginAnalyzerConfig, String> {

@Override public String convertToDatabaseColumn(PluginAnalyzerConfig config) {
Gson parser = new Gson();
return parser.toJson(config, PluginAnalyzerConfig.class);
}

@Override public PluginAnalyzerConfig convertToEntityAttribute(String source) {
Gson parser = new Gson();
return parser.fromJson(source, PluginAnalyzerConfig.class);
}
}

显然,如果没有这种方法,您将无法像 MySQL 那样以良好的方式使用 Json。但我认为,如果您创建 MySQL 专用查询来使用它,就没有问题。

关于java - 具有 Mysql JSON 类型的 Spring Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317322/

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