Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 地图<;字符串,字符串>;spring数据jdbc中的单列映射_Java_Spring_Spring Data_Mapping_Spring Data Jdbc - Fatal编程技术网

Java 地图<;字符串,字符串>;spring数据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

我试图使用数据JDBC映射一个具有映射字段的资源类。以下是简化实体:

公共类资源{
@身份证
私人长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中得到特殊处理。 我有点惊讶,通过
编写转换器
来持久化
映射实际上是可行的

我建议使用自定义类型替换映射,该类型可能会包装
映射
。 这样,任何对地图的特殊处理都不会起作用

当然,将其作为功能请求提出也是一种选择