0

我们使用 6 个月的历史网络流量数据生成 48 小时的投影数据。最终的投影数据被加载到 Neo4J 中,以支持前端 Web 应用程序,用户可以在其中搜索服务器并查看其未来与组织内其他服务器的通信/数据传输。我们定义了一个主机节点和关系 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();
}

每小时关系信息 (type(r)) 未从 spring 数据 neo4j 存储库返回。

节点和关系定义是否正确?我在这里错过了什么吗?

任何帮助,将不胜感激...

4

1 回答 1

0

你使用的那些空字符串真的很奇怪。我认为空的关系类型不起作用。

默认情况下,方向是OUTGOING,如果你想同时看到你必须direction=BOTH在注释中指定。

在您的存储库示例中,您需要使用投影或 @QueryResult 来查看该type(r) AS type列。

于 2018-11-10T16:07:23.407 回答