我正在开发一个直接使用neo4j-ogm库的程序(也就是我不使用任何Spring组件),而我的Neo4J DB有这种关系:
PARAMETER<-[:HAS_PARAMETER]-TASK-[:HAS_STEP]->STEP-[:HAS_PARAMETER]->PARAMETER
STEP-[:HAS_STEP]->STEP
PARAMETER-[:INITIALIZES]->PARAMETER
我编写了所有的域类(PARAMETER,TASK和STEP)。
我编写了一个类似的查询(使用session.query
方法调用):
MATCH (:TASK)-[r*]->() return r
我可以直接将查询结果映射到域对象吗?
编辑: 为了更加清晰,我已经完成了这个课程任务
@NodeEntity
class Task {
@RelationShip(type = "HAS_STEP")
Set<Step> steps;
@RelationShip(type = "HAS_PARAMETER")
Set<Parameter> parameters;
}
我希望填充一个Task实例(包含步骤和参数),并且每个步骤也都要填充。
答案 0 :(得分:2)
您可以使用session.query()
返回包含结果的org.neo4j.ogm.model.Result
。仅在Neo4j OGM 2.0.1中支持此功能。
不支持返回路径,因此您必须返回组成路径的节点和关系,例如
MATCH p=(t:TASK)-[r*]->() return t, nodes(p), rels(p)
然后,您可以从t
访问Result
,这将是一个水合任务。或者,您可以从Result
访问路径中所有水合实体的节点。
如果您需要了解可以映射的内容,那么Christophe引用的博客帖子对于OGM功能仍然有效。
答案 1 :(得分:1)
是的,你可以,有一篇关于它的完整博客文章:
http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html