CypherQuery возвращает пустой результат в JavaEmbedded, но правильный результат в Neoclipse

У меня странная проблема с шифрованным запросом. Запрос отлично работает в Neoclipse и возвращает правильный результат. Но во встроенном режиме java результат пуст. Я не могу понять проблему. Есть ли ограничение на количество символов запроса во встроенной Java или что-то подобное?

Вот шифрованный запрос:

    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";

Вот мой тестовый класс Java:

@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 ==============");

    }

И это вывод из java-консоли:

============== 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 ==============

Оба запроса (в java) должны возвращать один и тот же результат (по крайней мере, в Neoclipse). Разница в том, что «сложный запрос» получил больше условий «ГДЕ».

Кстати, запросы генерируются динамически из java, но это не должно быть проблемой, потому что они работают в Neoclipse. (И я всегда использовал одно и то же местоположение базы данных.)

Спасибо за помощь! Привет Макс


person droiddude    schedule 25.04.2013    source источник
comment
Какую версию neo4j вы используете в Neoclipse/Java?   -  person Peter Neubauer    schedule 26.04.2013
comment
В Java встроено: ` ‹dependency› ‹groupId›org.neo4j.app‹/groupId› ‹artifactId›neo4j-server‹/artifactId› ‹version›1.8.2‹/версия› ‹/dependency› ‹dependency› ‹groupId› org.neo4j.app‹/groupId› ‹artifactId›neo4j-server‹/artifactId› ‹classifier›static-web‹/classifier› ‹version›1.8.2‹/version› ‹/dependency›` и Neoclipse 1.8   -  person droiddude    schedule 26.04.2013
comment
Можете ли вы опубликовать небольшой пример Java-проекта, демонстрирующего эту проблему, чтобы проверить ее?   -  person Peter Neubauer    schedule 26.04.2013
comment
Здравствуйте, Петр, спасибо за помощь. Есть ли возможность поделиться проектом приватлей? Я не могу опубликовать тестовую базу данных здесь. Я настроил MavenProject с необходимым кодом и включил тестовую базу данных. Привет Макс   -  person droiddude    schedule 26.04.2013


Ответы (1)


Итак, я смог выяснить, что оба запроса отлично работают с Neo4jServer версии 1.7.2. Что-то должно быть не так с версией 1.8.2!!

person droiddude    schedule 30.04.2013
comment
И в версии 1.9.RC1 тоже работает! Так что похоже проблема решена в следующей версии. - person droiddude; 30.04.2013