sql >> Base de Datos >  >> RDS >> Mysql

Spring Data con tipo Mysql JSON

De acuerdo con Datos de Spring Documentos Apéndice D:Tipos de retorno de consulta de repositorio , los únicos tipos admitidos son:vacío, primitivos, tipos de envoltorio, T, iterador, colección, lista, opcional, flujo, futuro, CompletableFuture, ListenableFuture, sector, página, GeoResult, GeoResults, GeoPage.

Como puede ver, por ahora, no es compatible. Una de las ideas detrás de esto creo que todavía no es un sentido común de todas las bases de datos.

Obviamente, puede usar este almacenamiento como Json y crear un convertidor para él:

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

y:

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, sin ese enfoque, no utilizará Json de una manera agradable como MySQL es capaz de hacer. Pero creo que no hay problema si crea consultas especializadas de MySQL para hacer uso de él.