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 楼答案
如果使用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(但不要创建内部类,而是在实体扫描路径中创建一个类)