首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDN4- Neo4jOperation.convert()被弃用

SDN4- Neo4jOperation.convert()被弃用
EN

Stack Overflow用户
提问于 2015-06-26 09:32:09
回答 2查看 684关注 0票数 2

使用SDN 3,可以使用Neo4jOperations.convert(Object value,Class类型)将返回Iterable>的密码查询的结果转换为Neo4j域类(带有@NodeEntity注解)。例如:

代码语言:javascript
复制
Map<String,Object> results = repository.findSomething("John");
for(Map<String,Object> row : results) {
    Person person = neo4jOperations.convert(row.get("person"), Person.class);
    ...
}

// Repository method
@Query("MATCH (person:Person)-[rel]->(node) WHERE person.firstName = {firstName}  RETURN DISTINCT person, COUNT(rel) ORDER BY COUNT(rel)"
Iterable<Map<String,Object>> findSomething(@Param("firstName") String firstName);

由于SDN 4中的Neo4jOperations中不再存在T转换(对象值,类类型),这在SDN 4中的等价性是什么?

simple-mapping没有介绍如何显式或隐式地完成映射/转换。

我在用快照构建。

任何帮助都很感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-29 09:13:50

正如Luanne所建议的,您现在需要分两步完成。对于存储库方法,您可以尝试这样的方法:

代码语言:javascript
复制
@Query("MATCH (p:Person)-[rel]->(node) WHERE p.firstName = {firstName} RETURN DISTINCT p ORDER BY COUNT(rel)")
Iterable<Person> findSomething(@Param("firstName") String firstName);

这应该会以正确的顺序返回您想要的Person实体,尽管我很感激实际的计数不会被映射,因此您必须发出第二个查询才能找到计数。

如果您不需要实际的Person实体,而只需要这些节点的一些属性,那么解决方法可能是映射到@QueryResult对象。就像这样:

代码语言:javascript
复制
@Query("MATCH (p:Person)-[rel]->(node) WHERE p.firstName = {firstName} RETURN DISTINCT p.firstName, p.surname, p.dateOfBirth, COUNT(rel) AS rank ORDER BY rank")
Iterable<PersonQueryResult> findSomething(@Param("firstName") String firstName);

...where PersonQueryResult是一个带有@QueryResult注释的POJO,它的setters/getters对应于查询的return子句中列出的属性。

票数 2
EN

Stack Overflow用户

发布于 2015-06-29 03:21:28

对于这个用例,您必须返回ID(person)并使用repository.findOneneo4jOperations.load

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31069679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档