SDN 4 - Neo4jOperation.convert() 已弃用
SDN 4 - Neo4jOperation.convert() deprecated
使用 SDN 3 可以使用 Neo4jOperations.convert(对象值,Class 类型)
将 returns Iterable
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);
由于 T convert(Object value, Class type) 不再存在于 SDN 4 的 Neo4jOperations 中,在 SDN 4 中它的等价物是什么?
http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#reference_programming_model_simple-mapping 不包括 mapping/conversion 是如何显式或隐式完成的。
我正在使用快照构建。
非常感谢任何帮助。
对于此用例,您必须 return ID(person) 并改用 repository.findOne
或 neo4jOperations.load
。
正如 Luanne 所建议的,您目前需要分两步完成此操作。对于存储库方法,您可以尝试这样的方法:
@Query("MATCH (p:Person)-[rel]->(node) WHERE p.firstName = {firstName} RETURN DISTINCT p ORDER BY COUNT(rel)")
Iterable<Person> findSomething(@Param("firstName") String firstName);
这应该 return 您想要的 Person
实体以正确的顺序排列,但我很欣赏实际计数不会被映射,因此您必须发出第二个查询才能找到算了,不幸的是。
如果您不需要实际的 Person
实体,而只是这些节点的一些属性,那么解决方法可能是映射到 @QueryResult
对象。像这样:
@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);
...其中 PersonQueryResult
是用 @QueryResult
注释的 POJO,其中 setters/getters 对应于查询的 return 子句中列出的属性。
使用 SDN 3 可以使用 Neo4jOperations.convert(对象值,Class 类型) 将 returns Iterable
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);
由于 T convert(Object value, Class type) 不再存在于 SDN 4 的 Neo4jOperations 中,在 SDN 4 中它的等价物是什么?
http://docs.spring.io/spring-data/neo4j/docs/4.0.0.M1/reference/html/#reference_programming_model_simple-mapping 不包括 mapping/conversion 是如何显式或隐式完成的。
我正在使用快照构建。
非常感谢任何帮助。
对于此用例,您必须 return ID(person) 并改用 repository.findOne
或 neo4jOperations.load
。
正如 Luanne 所建议的,您目前需要分两步完成此操作。对于存储库方法,您可以尝试这样的方法:
@Query("MATCH (p:Person)-[rel]->(node) WHERE p.firstName = {firstName} RETURN DISTINCT p ORDER BY COUNT(rel)")
Iterable<Person> findSomething(@Param("firstName") String firstName);
这应该 return 您想要的 Person
实体以正确的顺序排列,但我很欣赏实际计数不会被映射,因此您必须发出第二个查询才能找到算了,不幸的是。
如果您不需要实际的 Person
实体,而只是这些节点的一些属性,那么解决方法可能是映射到 @QueryResult
对象。像这样:
@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);
...其中 PersonQueryResult
是用 @QueryResult
注释的 POJO,其中 setters/getters 对应于查询的 return 子句中列出的属性。