SDN 4 Session.query对@QueryResult不起作用

时间:2016-08-12 10:57:26

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

在我的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 Data Neo4j存储库方法可以很好地处理这个WeightedDecision查询结果。

现在我正在尝试手动构建一个Cypher查询,我将返回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是一个节点实体,一切正常,并返回决策列表。

如何使用@QueryResult类型?

1 个答案:

答案 0 :(得分:1)

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

仅在存储库查询时支持。