Spring数据与Mysql JSON类型

我们在项目中使用带有JPA的spring数据。 MySQL服务器版本是5.7。

我有两个问题:

1)spring数据是否与持久化对象兼容到MySQL db上的新JSON类型? 换句话说,我希望有一个实体,而不是在其表中有多个列 – 它将包含一个具有JSON类型的列。

2)Spring数据存储库是否与这种机制兼容? 例如(通过存储库接口自动生成CRUD操作代码)?

根据Spring Data Docs附录D:Repository查询返回类型 ,唯一支持的类型是:void,primitives,Wrapper types,T,Iterator,Collection,List,Optional,Stream,Future,CompletableFuture,ListenableFuture,Slice,Page,GeoResult, GeoResults,GeoPage。

如您所见,目前,它不受支持。 其背后的一个想法我认为它还不是所有数据库的常识。

显然,您可以将此存储用作Json,并为其创建转换器:

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

和:

 public class PluginAnalyzerConfigConverter implements AttributeConverter { @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); } } 

显然,如果没有这种方法,你就不会像MySQL那样以一种很好的方式使用Json。 但是我认为如果你创建MySQL专用查询来使用它没有问题。