SDN 4 Session.query 不适用于@QueryResult

SDN 4 Session.query doesn't work for @QueryResult

在我的 SDN 4 项目中,我有一个 @QueryResult POJO:

@QueryResult
public class WeightedDecision {

    private Decision decision;

    private double weight;

    public Decision getDecision() {
        return decision;
    }

    public void setDecision(Decision decision) {
        this.decision = decision;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

}

还有很多 Spring 数据 Neo4j 存储库方法可以很好地处理这个 WeightedDecision 查询结果。

现在我正在尝试手动构建一个 Cypher 查询,结果我将 return WeightedDecision 的列表。

我为此使用了以下方法:

return (List<WeightedDecision>) session.query(WeightedDecision.class, cypher, parameters);

我的 Cypher 查询如下所示:

MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User) WHERE id(parentD) = {decisionId} OPTIONAL MATCH (childD)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c:Criterion) WHERE id(c) IN {criteriaIds} WITH childD, ru, u, vg.avgVotesWeight as weight  RETURN childD AS decision, ru, u, sum(weight) as weight ORDER BY weight DESC

但是在这种情况下 session.query 的结果是空的。

如果我将 session.query 方法参数更改为:

return (List<WeightedDecision>) session.query(Decision.class, cypher, parameters); 

其中 Decision 是一个节点实体,一切正常,returns 决策列表。

如何让它与 @QueryResult 类型一起工作?

@QueryResult 不是 OGM 概念,因此不受 OGM 会话支持。

它仅在存储库查询中受支持。