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专用查询来使用它没有问题。