【问题标题】:Spring Data with Mysql JSON type具有 Mysql JSON 类型的 Spring Data
【发布时间】:2017-01-12 00:59:10
【问题描述】:

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

我有两个问题:

1) spring 数据是否与将对象持久化到 MySQL db 上的新 JSON 类型兼容?换句话说,我希望有一个实体,而不是在其表中有多个列 - 它将包含一个 JSON 类型的列。

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

【问题讨论】:

    标签: java mysql json spring spring-data


    【解决方案1】:

    根据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 专门的查询来使用它是没有问题的。

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 2019-12-05
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2023-03-12
      • 2018-02-07
      相关资源
      最近更新 更多