尝试使用@QueryResult映射到POJO时,cypher查询未返回结果

时间:2016-02-03 10:37:58

标签: java spring neo4j spring-data-neo4j-4 neo4j-ogm

我正在使用

运行密码查询
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)

1 个答案:

答案 0 :(得分:0)

在Spring Data Neo4j存储库中使用了

@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(...);

那么它应该可以正常工作。