在我的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
类型?
答案 0 :(得分:1)
@QueryResult不是OGM概念,因此OGM会话不支持。
仅在存储库查询时支持。