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 会话支持。
它仅在存储库查询中受支持。
在我的 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 会话支持。
它仅在存储库查询中受支持。