数据库
首页 > 数据库> > java-具有Mysql JSON类型的Spring数据

java-具有Mysql JSON类型的Spring数据

作者:互联网

我们在项目中将弹簧数据与JPA一起使用.
MySQL服务器的版本是5.7.

我有两个问题:

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

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

解决方法:

根据Spring Data Docs Appendix D: Repository query return types,仅支持的类型为:void,基元,包装器类型,T,迭代器,集合,列表,可选,流,将来,CompletableFuture,ListenableFuture,切片,页面,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专用查询来利用它,那没有问题.

标签:spring-data,spring,json,java,mysql
来源: https://codeday.me/bug/20191118/2026439.html