2015-10-16 75 views
1

我有一些意外失败的spring-data-neo4j/ogm代码。这个neo4j-ogm代码为什么产生'无效语法'?

public Member loadMemberBySocialMediaAccount(String connectionKey) { 
     String[] connectionKeyParts = connectionKey.split(":"); 
     Filters filters = new Filters() 
       .add(new Filter("providerId", connectionKeyParts[0])) 
       .add(new Filter("providerUserId", connectionKeyParts[1])); 
     Iterator<SocialMediaAccount> socialMediaAccounts = session.loadAll(SocialMediaAccount.class, filters, 2).iterator(); 
     return socialMediaAccounts.hasNext() ? socialMediaAccounts.next().getMember() : null; 
} 

当我深入到OGM代码,我可以看到下面的异常被抛出。这是预期的吗?

org.neo4j.ogm.session.result.ResultProcessingException: "errors":[{"code":"Neo.ClientError.Statement.InvalidSyntax","message":"Invalid input 'n': expected whitespace, comment, '.', node labels, '[', \"=~\", IN, IS, '^', '*', '/', '%', '+', '-', '<', '>', \"<=\", \">=\", '=', \"<>\", \"!=\", AND, XOR, OR, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, RETURN, UNION, ';' or end of input (line 1, column 72 (offset: 71))\n\"MATCH (n:`SocialMediaAccount`) WHERE n.`providerId` = { `providerId` } n.`providerUserId` = { `providerUserId` } WITH n MATCH p=(n)-[*0..2]-(m) RETURN p, ID(n)\"\n                  ^"}]} 

回答

0

刚才检查测试,并期望是什么是除第一所有过滤器必须有(AND或OR)定义的BooleanOperator。

所以你的情况:

Filters filters = new Filters() 
       .add(new Filter("providerId", connectionKeyParts[0])); 
Filter providerUserIdFilter = new Filter("providerUserId", connectionKeyParts[1]); 
providerUserIdFilter.setBooleanOperator(BooleanOperator.AND); 
filters.add(providerUserIdFilter); 

我已经打开https://github.com/neo4j/neo4j-ogm/issues/73为我们弄清楚是否是可行的默认BooleanOperator后续过滤器和。

相关问题