Neo4j 6 Spring boot 2.4 migrate driver session query
Neo4j 6 Spring boot 2.4 migrate driver session query
我正在尝试迁移到 neo4j 6。这个方法在 neo4j6 中的等效项是什么?
这里的结果包含:{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,ref,refObj";
return this.driver.session().run(query, Collections.emptyMap());
}
但这给出的结果无法转换为我的@Node(实体)类。以前的版本给出了一个结果,其中包含实际的 java 个对象(映射到 类)。
结果在这里 is:Record<{person: node<7>, ref: relationship<8>, refObj: node<0>}>
基本上最主要的是:我需要映射到 java 对象的节点。但是我通过密码查询需要它们,因为我需要在删除它们之间的关系之前在(结果)节点上做一些事情。
事实证明它确实回馈了我需要的东西。
Result result = this.getPersonRefs(id);
result.list().forEach((entry) -> {
问题是,例如 entry.get("refObj").asObject()
和 asNode()
都没有真正回馈我认为应该回馈的东西。
解决方法:
entry.get("refObj").asMap()
这会返回对象的实际属性。然后您只需要使用 ObjectMapper 将其转换为 MyClass.class。
我正在尝试迁移到 neo4j 6。这个方法在 neo4j6 中的等效项是什么? 这里的结果包含:{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,ref,refObj";
return this.driver.session().run(query, Collections.emptyMap());
}
但这给出的结果无法转换为我的@Node(实体)类。以前的版本给出了一个结果,其中包含实际的 java 个对象(映射到 类)。 结果在这里 is:Record<{person: node<7>, ref: relationship<8>, refObj: node<0>}> 基本上最主要的是:我需要映射到 java 对象的节点。但是我通过密码查询需要它们,因为我需要在删除它们之间的关系之前在(结果)节点上做一些事情。
事实证明它确实回馈了我需要的东西。
Result result = this.getPersonRefs(id);
result.list().forEach((entry) -> {
问题是,例如 entry.get("refObj").asObject()
和 asNode()
都没有真正回馈我认为应该回馈的东西。
解决方法:
entry.get("refObj").asMap()
这会返回对象的实际属性。然后您只需要使用 ObjectMapper 将其转换为 MyClass.class。