I have a strange problem with a cypher query. The query works fine in Neoclipse and returns the correct result. But in java embedded mode the result is empty. I can't figure out the problem. Is there a query character limit in java embedded or anything similar?
Here is the cypher query:
START
typeNode6=node(6) ,
containerNode=node(9) ,
typeNode35=node(35) ,
typeNode15=node(15) ,
typeNode18=node(18) ,
typeNode33=node(33)
MATCH (node6)-[:TYPE]->(typeNode6) ,
(containerNode)-[:CONTAINS*]->(node6) ,
(node35)-[:TYPE]->(typeNode35) ,
(node6)-[:`http://www.test.test/types/s3/media#actors`]->(node35) ,
(node15)-[:TYPE]->(typeNode15) ,
(node35)-[:`http://www.test.test/types/s3/media#impersonatedBy`]->(node15) ,
(node18)-[:TYPE]->(typeNode18) ,
(node15)-[:`http://www.test.test/types/common#namedBy`]->(node18) ,
(node33)-[:TYPE]->(typeNode33) ,
(node6)-[:`http://www.test.test/types/s3/media#runtime`]->(node33)
WHERE
node6.`http://www.test.test/types/s3/media#releaseYear`! = 1988
AND node18.`http://www.test.test/types/common#firstName`! = 'Robert'
AND node18.`http://www.test.test/types/common#lastName`! = 'Davi'
AND node33.`http://www.test.test/types/common#intValue`! = 131 RETURN node6";
Here is my java test-class:
@Test
public void queryExecute() {
ExecutionResult result, result2;
ExecutionEngine engine;
String query = "START typeNode6=node(6) ,containerNode=node(9) ,typeNode35=node(35) ,typeNode15=node(15) ,typeNode18=node(18) MATCH (node6)-[:TYPE]->(typeNode6) ,(containerNode)-[:CONTAINS*]->(node6) ,(node35)-[:TYPE]->(typeNode35) , (node6)-[:`http://www.test.test/types/s3/media#actors`]->(node35) ,(node15)-[:TYPE]->(typeNode15) , (node35)-[:`http://www.test.test/types/s3/media#impersonatedBy`]->(node15) ,(node18)-[:TYPE]->(typeNode18) , (node15)-[:`http://www.test.test/types/common#namedBy`]->(node18) WHERE node18.`http://www.test.test/types/common#firstName`! = 'Robert' AND node18.`http://www.test.test/types/common#lastName`! = 'Davi' RETURN node6";
String query2 = "START typeNode6=node(6) ,containerNode=node(9) ,typeNode35=node(35) ,typeNode15=node(15) ,typeNode18=node(18) ,typeNode33=node(33) MATCH (node6)-[:TYPE]->(typeNode6) ,(containerNode)-[:CONTAINS*]->(node6) ,(node35)-[:TYPE]->(typeNode35) , (node6)-[:`http://www.test.test/types/s3/media#actors`]->(node35) ,(node15)-[:TYPE]->(typeNode15) , (node35)-[:`http://www.test.test/types/s3/media#impersonatedBy`]->(node15) ,(node18)-[:TYPE]->(typeNode18) , (node15)-[:`http://www.test.test/types/common#namedBy`]->(node18) ,(node33)-[:TYPE]->(typeNode33) , (node6)-[:`http://www.test.test/types/s3/media#runtime`]->(node33) WHERE node6.`http://www.test.test/types/s3/media#releaseYear`! = 1988 AND node18.`http://www.test.test/types/common#firstName`! = 'Robert' AND node18.`http://www.test.test/types/common#lastName`! = 'Davi' AND node33.`http://www.test.test/types/common#intValue`! = 131 RETURN node6";
engine = new ExecutionEngine(svrInstance.getNeoGraphdb());
result = engine.execute(query);
result2 = engine.execute(query2);
Assert.assertNotNull(result);
System.out.println("============== CYPHER QUERY TEST ==============");
System.out.println("uncomplicated: ");
System.out.println(result.toString());
System.out.println("complicated: ");
System.out.println(result2.toString());
System.out.println("============== CYPHER QUERY TEST ==============");
}
And this is the output from the java console:
============== CYPHER QUERY TEST ==============
uncomplicated:
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| node6 |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| Node[7]{http://www.test.test/types/common#id:"movie_1",http://www.test.test/types/s3/media#releaseYear:1988,type:"instance",instanceId:"movie_1"} |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
1 row
138 ms
complicated:
+-------+
| node6 |
+-------+
+-------+
0 row
4 ms
============== CYPHER QUERY TEST ==============
Both queries (in java) should return the same result (At least in Neoclipse). The difference is that the "complicated query" got more "WHERE" conditions.
By the way the queries are generated dynamically from java, but this shouldn't be the problem, because they work in Neoclipse. (And I always used the same database location.)
Thank you for helping! Greetings Max