Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j和spring数据:数字索引密码查询不工作?_Neo4j_Spring Data Neo4j - Fatal编程技术网

Neo4j和spring数据:数字索引密码查询不工作?

Neo4j和spring数据:数字索引密码查询不工作?,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,在密码查询和数字索引方面存在一些问题 @Indexed(unique = true, numeric = false) private Long accountId; 返回: neo4j-sh (0)$ start n=node:Principal(accountId = '1') return n; +------------------------------------------------------------------------------------------

在密码查询和数字索引方面存在一些问题

@Indexed(unique = true, numeric = false)
private Long accountId;
返回:

neo4j-sh (0)$ start n=node:Principal(accountId = '1') return n;      
+---------------------------------------------------------------------------------------------+
| n                                                                                           |
+---------------------------------------------------------------------------------------------+
| Node[41722]{__type__:"example.package.Principal",accountId:1,name:"Simple User"} |
+---------------------------------------------------------------------------------------------+
1 row
neo4j-sh (0)$ start n=node:Principal(accountId = '1') return n; 
+---+
| n |
+---+
+---+
0 row
但是

@Indexed(unique = true, numeric = true)
private Long accountId;
返回:

neo4j-sh (0)$ start n=node:Principal(accountId = '1') return n;      
+---------------------------------------------------------------------------------------------+
| n                                                                                           |
+---------------------------------------------------------------------------------------------+
| Node[41722]{__type__:"example.package.Principal",accountId:1,name:"Simple User"} |
+---------------------------------------------------------------------------------------------+
1 row
neo4j-sh (0)$ start n=node:Principal(accountId = '1') return n; 
+---+
| n |
+---+
+---+
0 row
neo4j 1.9.2
spring-data-neo4j 2.3.0.RC1

如果我理解正确的话,这可能与此有关,但它相当古老

更新:

如果我使用

@Indexed(unique = true, numeric = false)
另一件有趣的事情发生了。检查关系是否存在(它实际存在于数据库中):

计数(r)等于0-不正确:

Long accountId = 1L;
Map<String, Object> result = template.query(
        "START child=node:Principal(accountId='{childId}') " +
                "MATCH child-[r:IS_MEMBER_OF]->parent " +
                "RETURN count(r)", MapUtil.map("childId", accountId)).singleOrNull();
Long accountId=1L;
映射结果=template.query(
“开始子节点=节点:主体(accountId='{childId}')”+
“匹配子项-[r:是]->父项的成员”+
“返回计数(r)”,MapUtil.map(“childId”,accountId)).singleOrNull();
计数(r)等于1-正确:

Long accountId = 1L;
Map<String, Object> result = template.query(
        "START child=node:Principal(accountId='1') " +
                "MATCH child-[r:IS_MEMBER_OF]->parent " +
                "RETURN count(r)",null).singleOrNull();
Long accountId=1L;
映射结果=template.query(
“开始子节点=节点:主体(accountId='1')”+
“匹配子项-[r:是]->父项的成员”+
“返回计数(r)”,null.singleOrNull();

数字索引查找无法从具有文本值的cypher进行,lucene解析器无法创建正确的内部查询。同样,对于参数,传递给索引的普通原语值在neo4j lucene实现中被视为字符串,因为查询无法知道数据是以数字形式索引的还是以字符串形式索引的

// this won't work, you have to remove the single quotes around '{childId}'
"START child=node:Principal(accountId='{childId}') " +

    "MATCH child-[r:IS_MEMBER_OF]->parent " +
    "RETURN count(r)", MapUtil.map("childId", accountId)).singleOrNull();

使用cypher进行数值查询的唯一方法是在java参数映射中将
ValueContext.numeric(1)
值作为参数传递到嵌入式数据库。

还有一个问题,如果我使用@index(unique=true,numeric=true),我是否正确理解了这一点那么我无法从neo4j控制台/Neoeclipse执行密码查询?