Отношение не возвращается при определении самоссылающихся узлов в SDN (Spring Data Neo4J)
Мы генерируем 48-часовые проекционные данные, используя 6-месячные исторические данные сетевого трафика. Данные окончательной проекции загружаются в Neo4J для поддержки интерфейсного веб-приложения, в котором пользователи могут выполнять поиск на сервере и видеть его будущие связи / передачи данных с другими серверами внутри организации. Мы определили узел узла и отношения от 1 до 48 часов (1H, 2H, 3H....48H). Следующий обычный запрос шифра работает нормально и возвращает данные с информацией об отношениях.
MATCH p=(parent:HOST)-[r]->(child:HOST)
WHERE parent.HOST_NAME = " "
RETURN p, type(r)
Но настройка SDN (Spring Data Neo4j) не возвращает информацию об отношении. Сущность узла определяется следующим образом.
@NodeEntity
public class Host {
@GraphId
private Long id;
private String Host_Name;
@Relationship(type="")
private List<Host> hosts;
public List<Host> getHosts() {
return hosts;
}
public Long getId() {
return id;
}
public String getName() {
return Host_Name;
}
}
И хранилище определяется как
public interface HostRepository extends Neo4jRepository<Host, Long> {
@Query("MATCH p=(parent:Host)<-[r:`28H`]-(child:Host) WHERE parent.Host_Name = \"pserver_01\" RETURN p, type(r)")
Collection<Host> getAllHosts();
}
Информация о часовом соотношении (тип (r)) не возвращается из репозитория данных весны neo4j.
Верны ли определения узлов и отношений? Я что-то здесь упускаю?
Любая помощь будет оценена...
1 ответ
Те пустые строки, которые вы используете, действительно странные. Я не думаю, что пустые типы отношений работают.
По умолчанию направление OUTGOING
, если вы хотите увидеть оба, вы должны указать direction=BOTH
в аннотации.
В вашем примере с репозиторием вам нужно использовать проекцию или @QueryResult, чтобы увидеть type(r) AS type
колонка.