Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Spring Data com tipo Mysql JSON


De acordo com Spring Data Documentos Apêndice D:Tipos de retorno de consulta do repositório , os únicos tipos com suporte são:void, primitivos, tipos de wrapper, T, Iterator, Collection, List, Optional, Stream, Future, CompletableFuture, ListenableFuture, Slice, Page, GeoResult, GeoResults, GeoPage.

Como você pode ver, por enquanto, não é suportado. Uma das ideias por trás disso acho que ainda não é um senso comum de todos os bancos de dados.

Obviamente, você pode usar esse armazenamento como Json e criar um conversor para ele:
  @Column(name = "configuration", nullable = false)
  @Convert(converter = PluginAnalyzerConfigConverter.class)
  private PluginAnalyzerConfig configuration;

e:
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);
  }
}

Obviamente que sem essa abordagem, você não fará uso do Json de uma maneira agradável como o MySQL é capaz. Mas acho que não há problema se você criar consultas especializadas no MySQL para usá-lo.