有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java节点不能强制转换为graphdb。节点

我有一个像下面这样的节点,我想在上面使用Pathfinder算法。算法如下。不幸的是,我得到了neo4j的错误。实体停止不能强制转换为组织。neo4j。图b。节点

我该怎么办?我不知道如何让spring使用这个组织。尼奥。格拉法尔戈图书馆

private Path testGraphAlgoFactory(Stop s1, Stop s2){

 PathExpander expander = PathExpanders.allTypesAndDirections();

 PathFinder<Path> pathFinder =
                GraphAlgoFactory.shortestPath(expander , 6);

 Path path = pathFinder.findSinglePath((Node)s1, (Node)s2);
}

这是我的第一节课,如下所示:

@NodeEntity
public class Stop {
    @GraphId
    private Long id;

    @Property(name="name")
    private String name;

    @Property(name="lon")
    private double longitude;

    @Property(name="lat")
    private double latitude;

    @Property(name="id")
    private String stopId;
}

共 (1) 个答案

  1. # 1 楼答案

    如果使用OGM将节点从图形转换为对象,这是一个有效的结果。 像Stop这样的类是“刚刚”的Java类,不知道它们有任何Neo4j来源

    除此之外(还有今天早些时候的另一个问题):图形算法是作为Neo4j中的插件使用的,而不是作为应用程序代码的一部分Neo4j Graph Algorithms documentation

    因此,在您的应用程序中,使用SessionFactory并获得一个新的Session来运行在Neo4j上调用算法的cypher语句可能会更容易。e、 g.CALL algo.shortestPath(...)

    另一个选项是,您可以在SpringData Neo4j存储库中使用自定义查询,通过使用@Query("CALL ...")执行查询语句。但是你必须知道你将从你的cypher声明中得到什么。然后可以将结果放入@QueryResult类中Sample from the docs(但不要创建内部类,而是在实体扫描路径中创建一个类)