【发布时间】:2025-11-21 18:10:01
【问题描述】:
我有以下 Neo4j Cypher 查询:
MATCH (parentD:Decision)-[:CONTAINS]->(childD:Decision)
WHERE id(parentD) = {parentDecisionId}
WITH childD, parentD
OPTIONAL MATCH (parentD)<-[:DEFINED_BY]-(c:Criterion)<-[:VOTED_ON]-(vg:VoteGroup)-[:VOTED_FOR]->(childD)
OPTIONAL MATCH (parentD)<-[:DEFINED_BY]-(ch:Characteristic)<-[:SET_ON]-(v:Value)-[:SET_FOR]->(childD)
WITH childD, {criterion: c, weight: vg.avgVotesWeight} AS weightedCriterion, {characteristic: ch, value: v.value} AS valuedCharacteristic
RETURN childD AS decision, collect(weightedCriterion) AS weightedCriteria, collect(valuedCharacteristic) AS valuedCharacteristics
因此,在我的 SDN 4 项目中,我希望检索 List<DecisionMatrix>
@QueryResult
public class DecisionMatrix {
private Decision decision;
private List<WeightedCriterion> weightedCriteria;
private List<ValuedCharacteristic> valuedCharacteristics;
}
@QueryResult
public class WeightedCriterion {
private Criterion criterion;
private Double weight;
}
@QueryResult
public class ValuedCharacteristic {
private Characteristic characteristic;
private Object value;
}
现在这个查询返回一个正确的标准列表,但一个错误的列表,其中包含一个空的特征元素。
例如,我没有任何与此查询条件匹配的特征,但在结果中我可以看到以下结构,其中包含两条记录:
RDBMS : [{criterion=Node[161], weight=4.333333333333333}, {criterion=Node[160], weight=2.1666666666666665}] : [{characteristic=null, value=null}, {characteristic=null, value=null}]
NoSQL : [{criterion=Node[160], weight=4.333333333333333}, {criterion=Node[161], weight=2.5}, {criterion=Node[162], weight=4.2}] : [{characteristic=null, value=null}, {characteristic=null, value=null}, {characteristic=null, value=null}]
结果包含一组正确的RDBMS(2 个条件)和NoSQL(3 个条件)的条件,但一组错误的特征。我希望这两个记录都有一个空的特征列表(0 个元素)(这些节点没有关联的特征)。但在第一条记录中,我有 2 个空特征(与标准相同的列表长度)和 3第二条记录的空特征。
我做错了什么以及如何解决?
【问题讨论】:
标签: neo4j cypher spring-data-neo4j-4