NodeEntity 无法转换为 graphdb.Node
NodeEntity cant be cast to graphdb.Node
我有一个如下所示的 NodeEntity,我想在其上使用 Pathfinder 算法。该算法如下。不幸的是,我收到 neo4j.entity.Stop cannot be cast to org.neo4j.graphdb.Node
的错误
我该怎么办?我不知道如何让 spring 使用 org.neo.graphalgo graphalgo 库
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 class 如下:
@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;
}
如果您使用 OGM 将图中的节点转换为对象,这是一个有效的结果。
像 Stop
这样的 class 是 "just" Java class 并且不知道它们有任何 Neo4j 来源。
除此之外(以及关于您今天早些时候的其他问题):图形算法旨在用作 Neo4j 中的插件,而不是您的应用程序代码的一部分。 Neo4j Graph Algorithms documentation
因此,在您的应用程序中使用 SessionFactory
并获得一个新的 Session
到 运行 调用 Neo4j 算法的密码语句可能会更容易。例如CALL algo.shortestPath(...)
另一种选择是您在 SpringData Neo4j 存储库中使用自定义查询,通过 @Query("CALL ...")
执行查询语句。但是你必须从你的密码语句中知道你会 return 什么。然后你可以把结果放入@QueryResult
class。 Sample from the docs(但不要在实体扫描路径中创建内部 class,而是创建 class)
我有一个如下所示的 NodeEntity,我想在其上使用 Pathfinder 算法。该算法如下。不幸的是,我收到 neo4j.entity.Stop cannot be cast to org.neo4j.graphdb.Node
的错误我该怎么办?我不知道如何让 spring 使用 org.neo.graphalgo graphalgo 库
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 class 如下:
@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;
}
如果您使用 OGM 将图中的节点转换为对象,这是一个有效的结果。
像 Stop
这样的 class 是 "just" Java class 并且不知道它们有任何 Neo4j 来源。
除此之外(以及关于您今天早些时候的其他问题):图形算法旨在用作 Neo4j 中的插件,而不是您的应用程序代码的一部分。 Neo4j Graph Algorithms documentation
因此,在您的应用程序中使用 SessionFactory
并获得一个新的 Session
到 运行 调用 Neo4j 算法的密码语句可能会更容易。例如CALL algo.shortestPath(...)
另一种选择是您在 SpringData Neo4j 存储库中使用自定义查询,通过 @Query("CALL ...")
执行查询语句。但是你必须从你的密码语句中知道你会 return 什么。然后你可以把结果放入@QueryResult
class。 Sample from the docs(但不要在实体扫描路径中创建内部 class,而是创建 class)