Java 无法序列化包含orientdb记录id的映射

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

刚刚将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 ObjectMapper().writeValueAsString(myMap);
其中

  • myMap
    :orientdb数据库中
    顶点的嵌入贴图属性
  • ObjectMapper
    com.fasterxml.jackson.databind.ObjectMapper
    jackson提供的序列化程序
完整错误标签
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