Отношение не возвращается при определении самоссылающихся узлов в 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 колонка.

Другие вопросы по тегам