Java 无法序列化包含orientdb记录id的映射
刚刚将orientdb从v2.1.19迁移到v3.0.2,我使用的代码有一个问题 基本上,现在这样做会引发强制转换异常:Java 无法序列化包含orientdb记录id的映射,java,nosql,orientdb,Java,Nosql,Orientdb,刚刚将orientdb从v2.1.19迁移到v3.0.2,我使用的代码有一个问题 基本上,现在这样做会引发强制转换异常: Map<String, String> myMap = vertex.getProperty("myMap"); String test = new ObjectMapper().writeValueAsString(myMap); Map myMap=vertex.getProperty(“myMap”); String test=new ObjectMapp
Map<String, String> myMap = vertex.getProperty("myMap");
String test = new ObjectMapper().writeValueAsString(myMap);
Map myMap=vertex.getProperty(“myMap”);
String test=new ObjectMapper().writeValueAsString(myMap);
其中
:orientdb数据库中myMap
顶点的嵌入贴图属性
:ObjectMapper
jackson提供的序列化程序com.fasterxml.jackson.databind.ObjectMapper
com.fasterxml.jackson.databind.JsonMappingException:com.orientechnologies.orient.core.id.ORecordId无法转换为java.lang.String
为什么ORecordId
不能再转换为String
我看到的唯一解决方案:检测地图中是否存在
或cordid
,并手动将其转换为字符串
。这似乎不适合我。我使用的解决方案(我不是很喜欢)
我创建了一个方法,将检索到的属性作为Map
public静态映射convertToStringMap(映射映射){
if(map==null)
返回null;
返回map.entrySet().stream().collect(Collectors.toMap(
entry->entry.getKey(),
entry->entry.getValue().toString());
}
然后我可以通过这种方式将嵌入的地图检索为map
Map<String, String> myMap = convertToStringMap(vertex.getProperty("myMap"))
// Do something with
// (both throw an exception if no passed through convertToStringMap)
String test = new ObjectMapper().writeValueAsString(myMap); // serialize
System.out.println(my.get("anEntryKey")); // print
Map myMap=convertToStringMap(vertex.getProperty(“myMap”))
//处理
//(如果未通过ConvertToString映射,两者都会引发异常)
字符串测试=新建ObjectMapper()。writeValueAsString(myMap);//连载
System.out.println(my.get(“anEntryKey”);//打印
谢谢您的回答,非常有用!
Map<String, String> myMap = convertToStringMap(vertex.getProperty("myMap"))
// Do something with
// (both throw an exception if no passed through convertToStringMap)
String test = new ObjectMapper().writeValueAsString(myMap); // serialize
System.out.println(my.get("anEntryKey")); // print