如果我在事务中 ,则cypher索引不返回任何内容,但如果我在运行cypher查询之前使用SpringRest或commit,则返回该节点。这是上下文:我有一个带索引的对象,我通过Neo4jTemplate.save()
插入它,如果我使用GraphRepository.findByPropertyValue()
来保存对象,则返回 ok ,但是如果我使用Cypher
索引,则返回无。如果我通过nodeID获取它,Cypher
仅返回该对象。
@NodeEntity
public class Group {
@GraphId
private Long nodeId;
@Indexed(indexName = "groupIndex")
private Long id;
}
使用时确定:
GraphRepository.findByProperty("id", 1L);
Neo4jTemplate.query("START n=node(1) RETURN n");
使用时没有:
Map<String, Object> params = new HashMap<>();
params.put("id", 1L);
Neo4jTemplate.query("START n=node:groupIndex(id={id}) RETURN n", params);
答案 0 :(得分:2)
问题在于,在查询中,您要求以String格式提供索引,但在第一个示例中,您将它们指定为数字。
如果内存正确地为我服务,则无法对数字存储的索引执行Cypher查询。您可以参考this link。
此处的简单解决方案是将您的@Indexed
归为@Indexed(indexName = "groupIndex", numeric = false)