2013-09-14 2 views
7

Я пытаюсь создать cypher-запрос в своем Java-Spring-приложении, который должен ответить на вопрос «дать всем сотрудникам, которые не создали элемент в элементе. список имена ":Neo4j Cypher Query «NOT IN» не работает, «IN» работает

@Query("START it=node:__types__(className = 'de.my.domain.ItemCl') MATCH empl-[r:CREATE]->it WHERE (it.name NOT IN ({0})) RETURN DISTINCT empl") 
List<Employee> findAllEmployeesWhoNeverCreatedItemFromItemNameList(List<String> itemNameList); 

Этот запрос дает„org.springframework.dao.InvalidDataAccessResourceUsageException“и отмечает„НЕ“, как отказ.

Если я пытаюсь тот же запрос без NOT («дать всем сотрудникам, которые Сотворил пункт в item.nameList», запрос делает то, что он должен.

В этой теме Петр Нойбауэра сказал, что это «NOT IN "существует в шифром: https://groups.google.com/forum/#!topic/neo4j/_PehVUfGaIA

Любая идея, что это неправильно

ответ

14

NOT является отрицанием, так что вы должны сделать это следующим образом:

WHERE NOT(it.name IN({0})) 
+0

Th Анк ты, я неправильно понял НЕ. Я тестировал его, и я получаю от WHERE NOT (it.name IN ({0})) и WHERE (it.name IN ({0})) те же результаты. Очень смущает. – Patrick

+0

Моя вина, вы были правы, спасибо! – Patrick