0

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

4

1 回答 1

0

所以,我可以弄清楚,这两个查询都适用于 Neo4jServer 版本 1.7.2。版本 1.8.2 一定有问题!!

于 2013-04-30T10:13:27.287 回答