Этот вопрос является продолжением Как определить все классы, реализующие определенный интерфейс, которые НЕ расширяют некоторый базовый класс? .
Принятый там ответ предлагает использовать:
MATCH
(i:Interface {name:'Action'} )<-[:IMPLEMENTS|EXTENDS*1..10]- (class),
(abstractAction:Class {name:'AbstractAction'})
where not (class)-->(abstractAction)
RETURN class
Это прекрасно работает и дает список классов, соответствующих этому условию.
Единственная проблема, которая у меня есть: имя этого интерфейса Action
(неожиданно) неоднозначно.Абсолютное имя класса com.whatever.foo.bar.Action
будет.Но когда я изменяю запрос на использование {name:'com.whatever.foo.bar.Action'}
, я получаю пустой результат.
Затем я попытался {package:'com.whatever.foo.bar' name:'Action'}
, но это не сработало:
Одно из имен свойств в вашем запросе недоступно в базе данных, убедитесь, что вы этого не сделалинеправильно или что ярлык доступен, когда вы запускаете этот оператор в своем приложении (отсутствует имя свойства: package )
Есть ли способ уменьшить результат поиска до что интерфейс действий, который меня действительно волнует?