gpt4 book ai didi

java - 无法序列化包含 orientdb 记录 ID 的映射

转载 作者:行者123 更新时间:2023-11-30 06:06:13 25 4
gpt4 key购买 nike

刚刚将 orientdb 从 v2.1.19 迁移到 v3.0.2,我使用的代码存在问题。

现在基本上这样做会引发强制转换异常:

Map<String, String> myMap = vertex.getProperty("myMap");
String test = new ObjectMapper().writeValueAsString(myMap);

地点

  • myMap :orientdb 数据库中 vertex 顶点的嵌入 map 属性。
  • ObjectMapper :com.fasterxml.jackson.databind.ObjectMapper Jackson 提供的序列化器。

完整错误标签:com.fasterxml.jackson.databind.JsonMappingException:com.orientechnologies.orient.core.id.ORecordId无法转换为java.lang.String

为什么ORecordId不能再转换为String

我看到的唯一解决方案:检测 map 中是否存在 ORecordId 并将其手动转换为 String。这似乎不适合我。

最佳答案

我使用的解决方案(我不太喜欢它)

我创建了一个方法,将检索到的属性处理为 Map<String, Object>

public static Map<String, String> convertToStringMap(Map<String, Object> map) {
if (map == null)
return null;
return map.entrySet().stream().collect(Collectors.toMap(
entry -> entry.getKey(),
entry -> entry.getValue().toString()));
}

然后我可以将嵌入的 map 检索为 Map<String, String>这边走

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

关于java - 无法序列化包含 orientdb 记录 ID 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com