如何解决Neo4j 6 Spring boot 2.4 迁移驱动会话查询
我正在尝试迁移到 neo4j 6。neo4j6 中的此方法等效于什么? 这里的 Result 包含:{ref=Employee.... 等等,所以是实际的 Java 对象。
//org.neo4j.ogm.session.Session is autowired
@GetMapping("/companies/{companyId}/refs")
public Result getCompanyRefs(@PathVariable final String companyId)
{
String query = "MATCH (company:Company)-[ref]-(refObj) where company.id=\"" + companyId + "\" RETURN company,ref,refObj";
return this.session.query(query,Collections.emptyMap());
}
我像这样尝试使用新的 neo4j 驱动程序:
//org.neo4j.driver.Driver is autowired
@GetMapping("/persons/{personId}/refs")
public Result getPersonRefs(@PathVariable final String personId)
{
String query = "MATCH (person:Person)-[ref]-(refObj) where person.id=\"" + personId + "\" RETURN person,refObj";
return this.driver.session().run(query,Collections.emptyMap());
}
但这给出了一个不能转换为我的@Node(实体)类的结果。以前的版本给出了一个 Result ,其中包含实际的 java 对象(映射到类)。 这里的结果是:Record,ref: relationship,refObj: node}> 基本上主要的是:我需要映射到java对象的节点。但是我通过密码查询需要它们,因为在删除它们之间的关系之前我需要在(结果)节点上做一些事情。
解决方法
所以事实证明它确实回馈了我需要的东西。
Result result = this.getPersonRefs(id);
result.list().forEach((entry) -> {
问题是,例如,entry.get("refObj").asObject()
和 asNode()
实际上都没有回馈我认为应该回馈的东西。
解决方案:
entry.get("refObj").asMap()
这会返回对象的实际属性。然后你只需要使用 ObjectMapper 将其转换为 MyClass.class。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。