2016-09-04 8 views
3

プロジェクトでJPAでスプリングデータを使用しています。 MySQLサーバのバージョンは5.7です。Springデータ(Mysql JSONタイプ)

私は2つの質問がある:

1)MySQLのDBに新しいJSON型にオブジェクトを永続化と互換性のある春のデータをしていますか?言い換えれば、テーブルに複数の列を持つ代わりに、JSON型の列が1つ含まれるエンティティを作成したいと考えています。

2)スプリングデータリポジトリは、このようなメカニズムと互換性がありますか?例えば(リポジトリインタフェースを介したCRUD操作の自動コード生成)?

答えて

1

Spring Data Docs Appendix D: Repository query return typesによれば、サポートされているタイプは、void、プリミティブ、ラッパータイプ、T、イテレータ、コレクション、リスト、オプション、ストリーム、未来、CompletableFuture、ListenableFuture、Slice、Page、GeoResult、GeoResults、GeoPageです。

ご覧のとおり、現在はサポートされていません。その背後にあるアイデアの1つは、まだすべてのデータベースの常識ではないと思います。

明らかに、あなたは、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); 
    } 
} 

そのアプローチせずに、あなたはJSONの使い方をすることはありませんことをMySQLが可能なような素晴らしい方法で。しかし、私はそれを利用するためにMySQLの特殊なクエリを作成しても問題はないと思います。

関連する問題