Mysql
 sql >> Base de données >  >> RDS >> Mysql

Données de printemps avec le type Mysql JSON

Selon Spring Data Docs Annexe D :Types de retour de requête de référentiel , les seuls types pris en charge sont :void, primitives, Wrapper types, T, Iterator, Collection, List, Optional, Stream, Future, CompletableFuture, ListenableFuture, Slice, Page, GeoResult, GeoResults, GeoPage.

Comme vous pouvez le voir, pour l'instant, ce n'est pas pris en charge. L'une des idées derrière cela, je pense que ce n'est pas encore le bon sens de toutes les bases de données.

Évidemment, vous pouvez utiliser ce stockage en tant que Json et créer un convertisseur :

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

et :

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

Évidemment, sans cette approche, vous n'utiliserez pas Json d'une manière agréable comme MySQL est capable de le faire. Mais je pense qu'il n'y a pas de problème si vous créez des requêtes MySQL spécialisées pour en faire usage.