Neo4j OGM Neo4jSession变量替换查询失败

Neo4j OGM Neo4jSession变量替换查询失败,neo4j,spring-data-neo4j-4,neo4j-ogm,Neo4j,Spring Data Neo4j 4,Neo4j Ogm,对我来说: 工作 此查询不起作用: neo4jSession.query("MATCH (n:Widget) WHERE (n.partNumber STARTS WITH '001') RETURN n.partNumber AS id, n.name AS description, n.urn AS urn LIMIT 10", Collections.emptyMap()); 同样的结果 我正在使用OGM 2.0.2、neo4j 2.3.2和Spring数据neo4j 4.1.1,但我在

对我来说:

工作

此查询不起作用:

neo4jSession.query("MATCH (n:Widget) WHERE (n.partNumber STARTS WITH '001') RETURN n.partNumber AS id, n.name AS description, n.urn AS urn LIMIT 10", Collections.emptyMap());
同样的结果

我正在使用OGM 2.0.2、neo4j 2.3.2和Spring数据neo4j 4.1.1,但我在没有使用neo4j本身的neo4j操作的情况下尝试了这一点,得到了相同的结果。哦,我还在HTTP驱动程序中使用neo4j的remove实例

OGM中有bug吗

更多信息:

通过网络,我相信这些信息是这样的:

 return (List) neo4jOperations.queryForObjects(Widget.class, query, params);
@NodeEntity
public class TypeaheadData {
  public Object id;
  public String description;
  public String uid;

  public TypeaheadData() {
  }

  public Object getId() {
    return id;
  }

  public void setId(Object id) {
    this.id = id;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public String getUid() {
    return uid;
  }

  public void setUid(String uid) {
    this.uid = uid;
  }
}
更多信息:

我已经用小部件@QueryResult和@NodeEntity(带getter和setter)尝试过了

我还通过电线检查了响应,在这两种情况下都是这样:

 return (List) neo4jOperations.queryForObjects(Widget.class, query, params);
@NodeEntity
public class TypeaheadData {
  public Object id;
  public String description;
  public String uid;

  public TypeaheadData() {
  }

  public Object getId() {
    return id;
  }

  public void setId(Object id) {
    this.id = id;
  }

  public String getDescription() {
    return description;
  }

  public void setDescription(String description) {
    this.description = description;
  }

  public String getUid() {
    return uid;
  }

  public void setUid(String uid) {
    this.uid = uid;
  }
}
如果我删除Widget@NodeEntity,这就是发出的请求:

{  
   "results":[  
      {  
         "columns":[  
            "id",
            "description",
            "uid"
         ],
         "data":[  
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            },
            {  
               "graph":{  
                  "nodes":[  

                  ],
                  "relationships":[  

                  ]
               }
            }
         ]
      }
   ],
   "errors":[  

   ]
}
移除Widget@NodeEntity后,响应中确实包含正确的数据,但映射程序抛出:

标量响应查询只能返回一列。确保你的 cypher查询只返回一项


OGM无法将属性集合映射到域实体。 您的查询返回:

{  
   "statements":[  
      {  
         "statement":"MATCH (n:Widget) WHERE (n.partNumber STARTS WITH {queryString}) RETURN n.partNumber AS id, n.name AS description, n.urn AS urn LIMIT {limit}",
         "parameters":{  
            "queryString":"001",
            "limit":10
         },
         "resultDataContents":[  
            "row"
         ],
         "includeStats":false
      }
   ]
}
但是,如果OGM是一个实体的话,没有什么可以告诉它这是一个什么样的实体


将其更改为
RETURN n
应使用
neo4jooperations.queryForObjects(Widget.class、query、params)执行此操作

OGM无法将属性集合映射到域实体中。 您的查询返回:

{  
   "statements":[  
      {  
         "statement":"MATCH (n:Widget) WHERE (n.partNumber STARTS WITH {queryString}) RETURN n.partNumber AS id, n.name AS description, n.urn AS urn LIMIT {limit}",
         "parameters":{  
            "queryString":"001",
            "limit":10
         },
         "resultDataContents":[  
            "row"
         ],
         "includeStats":false
      }
   ]
}
但是,如果OGM是一个实体的话,没有什么可以告诉它这是一个什么样的实体


将其更改为
RETURN n
应使用
neo4jooperations.queryForObjects(Widget.class、query、params)执行此操作

Neo4j OGM无法处理不返回整个节点对象的映射查询。如果在查询中仅请求节点属性的子集,则必须使用返回结果的查询方法。然后你必须自己做映射

如果您使用的是spring-data-neo4j,那么可以使用@QueryResult注释和repository@Query来处理映射。如果你看一下代码,他们已经从Neo4jSession提供的元数据中骗到了一个映射器

一个例外是,如果查询节点上的单个属性,则queryForObjects函数将起作用


对我来说这似乎是疏忽,但我该说谁呢

Neo4j OGM无法处理不返回整个节点对象的映射查询。如果在查询中仅请求节点属性的子集,则必须使用返回结果的查询方法。然后你必须自己做映射

如果您使用的是spring-data-neo4j,那么可以使用@QueryResult注释和repository@Query来处理映射。如果你看一下代码,他们已经从Neo4jSession提供的元数据中骗到了一个映射器

一个例外是,如果查询节点上的单个属性,则queryForObjects函数将起作用


对我来说这似乎是疏忽,但我该说谁呢

queryForObject不是用于随机节点属性的方法。我已经对您报告的问题进行了评论,queryForObject不是您应该使用的随机节点属性方法。我也对你报道的问题发表了评论
RETURN n.partNumber AS id, n.name AS description, n.urn AS urn