Java 地图<;字符串,字符串>;spring数据jdbc中的单列映射
我试图使用数据JDBC映射一个具有映射字段的资源类。以下是简化实体:Java 地图<;字符串,字符串>;spring数据jdbc中的单列映射,java,spring,spring-data,mapping,spring-data-jdbc,Java,Spring,Spring Data,Mapping,Spring Data Jdbc,我试图使用数据JDBC映射一个具有映射字段的资源类。以下是简化实体: 公共类资源{ @身份证 私人长id; 私人地图道具; } 我不想要一个单独的道具表,只有一列string类型,或者可能是postgres的jsonb 我为映射类型注册了转换器,如下所示: @配置 公共类DataJdbcConfiguration扩展了AbstractJdbcConfiguration{ @凌驾 公共JdbcCustomConversions JdbcCustomConversions(){ 返回新的JdbcC
公共类资源{
@身份证
私人长id;
私人地图道具;
}
我不想要一个单独的道具表,只有一列string类型,或者可能是postgres的jsonb
我为映射类型注册了转换器,如下所示:
@配置
公共类DataJdbcConfiguration扩展了AbstractJdbcConfiguration{
@凌驾
公共JdbcCustomConversions JdbcCustomConversions(){
返回新的JdbcCustomConversions(Arrays.asList(
JsonToStringConverter.INSTANCE,
StringToJsonConverter.INSTANCE)
);
}
@读取转换器
enum JsonToStringConverter实现转换器{
实例;
@凌驾
公共映射转换(字符串源){
试一试{
返回新的ObjectMapper().readValue(源,新的TypeReference()){
});
}捕获(JsonProcessingException e){
e、 printStackTrace();
}
返回null;
}
}
@写转换器
enum StringToJsonConverter实现转换器{
实例;
@凌驾
公共字符串转换(映射源){
试一试{
返回新的ObjectMapper().writeValueAsString(源);
}捕获(JsonProcessingException e){
e、 printStackTrace();
}
返回“”;
}
}
}
插入工作正常,但存储库上的
findAll
查询抛出org.springframework.data.mapping.MappingException:找不到类型类java.lang.String的PersistentEntity代码>Set
,List
和Map
在Spring数据JDBC中得到特殊处理。
我有点惊讶,通过编写转换器
来持久化映射实际上是可行的
我建议使用自定义类型替换映射,该类型可能会包装映射
。
这样,任何对地图的特殊处理都不会起作用
当然,将其作为功能请求提出也是一种选择