2016-09-04 4 views
3

Wir verwenden Federdaten mit JPA in unserem Projekt. Out MySQL Server-Version ist 5.7.Federdaten mit Mysql JSON Typ

Ich habe zwei Fragen:

1) Hat Federdaten kompatibel mit Objekten in den neuen JSON-Typ auf MySQL db persistierenden? mit anderen Worten, ich hätte gerne eine Entität, die anstatt mehrere Spalten in ihrer Tabelle hat - sie wird eine einzelne Spalte mit dem JSON-Typ enthalten.

2) Sind Federdaten-Repositories mit einem solchen Mechanismus kompatibel? z.B. (automatisierte Codegenerierung für CRUD-Operationen über die Repository-Schnittstelle)?

Antwort

1

Gemäß Spring Data Docs Appendix D: Repository query return types sind die einzigen unterstützten Typen: void, primitive, Wrapper-Typen, T, Iterator, Sammlung, Liste, optional, Stream, Future, CompleableFuture, ListenableFuture, Slice, Seite, GeoResult, GeoResults, GeoPage.

Wie Sie sehen können, wird es im Moment nicht unterstützt. Eine der Ideen dahinter Ich denke, dass es noch kein gesunder Menschenverstand aller Datenbanken ist.

Natürlich können Sie diese Speicherung als Json verwenden, und erstellen Sie einen Konverter für sie:

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

und:

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

dass Offensichtlich ohne diesen Ansatz, werden Sie nicht Verwendung von Json machen auf eine nette Art, wie MySQL es kann. Aber ich denke, dass es kein Problem gibt, wenn Sie MySQL spezialisierte Abfragen erstellen, um davon Gebrauch zu machen.