我正在使用
运行密码查询org.neo4j.ogm.session.Session#query(java.lang.Class<T>, java.lang.String, java.util.Map<java.lang.String,?>)
Class是一个POJO,我使用 @QueryResult
进行了注释@QueryResult
public class Neo4jQueryResultClip {
private String clipUuid;
private String postTitle;
private Date clipCreatedAt;
//getters and setters
}
我的查询cypher就是这样的
match (c:Clip) where (:User{uuid:{uuidParam}})-[:USER_FOLLOWS_USER]->(:User)-[:CLIP_BY_USER]->(c) OR (:User{uuid:{uuidParam}})-[:CLIP_BY_USER]->(c)match (c)<-[:CLIP_PRODUCT|:CLIP_INSPIRATION]-(post) optional match (c)<-[cp:CLIP_PRODUCT]-(post) return c.uuid as clipUuid,c.createdAt as clipCreatedAt,post.title as postTitle order by c.createdAt DESC
但是返回的结果的迭代器是空的
如果我使用
运行相同的查询org.neo4j.ogm.session.Session#query(java.lang.String, java.util.Map<java.lang.String,?>)
我得到了适当的结果,封装在
中org.neo4j.ogm.session.result.Result
对象。
我在这里缺少什么吗? 我已经验证了neo4j spring配置扫描了类 Neo4jQueryResultClip 我使用以下版本 spring-data-neo4j(4.0.0.RELEASE)和neo4j-ogm库(1.1.4)
答案 0 :(得分:0)
@QueryResult
(请参阅http://docs.spring.io/spring-data/neo4j/docs/4.0.0.RELEASE/reference/html/#reference_programming-model_mapresult),这就是为什么它没有被映射。
如果您在存储库中执行此操作
@Query("match (c:Clip) where (:User{uuid:{uuidParam}})-[:USER_FOLLOWS_USER]->(:User)-[:CLIP_BY_USER]->(c) OR (:User{uuid:{uuidParam}})-[:CLIP_BY_USER]->(c)match (c)<-[:CLIP_PRODUCT|:CLIP_INSPIRATION]-(post) optional match (c)<-[cp:CLIP_PRODUCT]-(post) return c.uuid as clipUuid,c.createdAt as clipCreatedAt,post.title as postTitle order by c.createdAt DESC")
Neo4jQueryResultClip getClip(...);
那么它应该可以正常工作。