如何将查询结果映射到域对象?
How can I map a query result to domain objects?
我正在开发一个直接使用 neo4j-ogm 库的程序(也就是我不使用任何 Spring 组件)和我的 Neo4J 数据库有这种关系:
PARAMETER<-[:HAS_PARAMETER]-TASK-[:HAS_STEP]->STEP-[:HAS_PARAMETER]->PARAMETER
STEP-[:HAS_STEP]->STEP
PARAMETER-[:INITIALIZES]->PARAMETER
我对我的所有域 classes(参数、任务和步骤)进行了编码。
我写了一个查询(使用 session.query
方法调用):
MATCH (:TASK)-[r*]->() return r
我可以直接将查询结果映射到域对象吗?
编辑:
为了更清晰,我有这个 class 任务
@NodeEntity
class Task {
@RelationShip(type = "HAS_STEP")
Set<Step> steps;
@RelationShip(type = "HAS_PARAMETER")
Set<Parameter> parameters;
}
我希望填充一个任务实例(带有步骤和参数)并且每个步骤也被填充。
是的,有一个完整的博客post:
http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html
您可以使用 session.query()
到 return 包含结果的 org.neo4j.ogm.model.Result
。这仅在 Neo4j OGM 2.0.1 中受支持。
不支持返回路径,因此您必须return构成路径的节点和关系,例如
MATCH p=(t:TASK)-[r*]->() return t, nodes(p), rels(p)
然后,您可以从 Result
访问 t
,这将是一个水合任务。或者,您可以从 Result
访问路径中所有水合实体的节点。
顺便说一下,如果您需要了解可以映射的内容,Christophe 引用的博客 post 仍然对 OGM 功能有效。
我正在开发一个直接使用 neo4j-ogm 库的程序(也就是我不使用任何 Spring 组件)和我的 Neo4J 数据库有这种关系:
PARAMETER<-[:HAS_PARAMETER]-TASK-[:HAS_STEP]->STEP-[:HAS_PARAMETER]->PARAMETER
STEP-[:HAS_STEP]->STEP
PARAMETER-[:INITIALIZES]->PARAMETER
我对我的所有域 classes(参数、任务和步骤)进行了编码。
我写了一个查询(使用 session.query
方法调用):
MATCH (:TASK)-[r*]->() return r
我可以直接将查询结果映射到域对象吗?
编辑: 为了更清晰,我有这个 class 任务
@NodeEntity
class Task {
@RelationShip(type = "HAS_STEP")
Set<Step> steps;
@RelationShip(type = "HAS_PARAMETER")
Set<Parameter> parameters;
}
我希望填充一个任务实例(带有步骤和参数)并且每个步骤也被填充。
是的,有一个完整的博客post:
http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html
您可以使用 session.query()
到 return 包含结果的 org.neo4j.ogm.model.Result
。这仅在 Neo4j OGM 2.0.1 中受支持。
不支持返回路径,因此您必须return构成路径的节点和关系,例如
MATCH p=(t:TASK)-[r*]->() return t, nodes(p), rels(p)
然后,您可以从 Result
访问 t
,这将是一个水合任务。或者,您可以从 Result
访问路径中所有水合实体的节点。
顺便说一下,如果您需要了解可以映射的内容,Christophe 引用的博客 post 仍然对 OGM 功能有效。