在neo4j-ogm中,如何通过对象属性查询从图中检索单个对象?

时间:2016-11-01 13:35:51

标签: neo4j-ogm

我尝试使用

查询对象
val query = new java.lang.String("MATCH (n:MicroConfig) WHERE n.nodeId = {nodeId} RETURN n LIMIT 1")
val parameters = new java.util.HashMap[String, String]()
parameters.put("nodeId", nodeId)
val all = session.queryForObject(new MicroConfig().getClass, query, parameters)

然而,它返回一个GraphModel,而不是我想要的MicroConfig类。

1 个答案:

答案 0 :(得分:1)

检查假设:

首先,MicroConfig是由OGM管理的类(即它是否出现在提供给SessionFactory构造函数的包中)?

其次,您的查询是否要检查ID(n) = {nodeId}?这将检查Neo4j内部ID是否与提供的nodeId参数匹配。否则,这必须是类MicroConfig上的实际属性。

潜在解决方案:

使用当前的API,您可以通过两种方式执行此操作:

  1. 使用Filter并仅返回Collection中的一项。 你可以这样做:

    val microConfig = session.loadAll(classOf[MicroConfig], new Filter("nodeId", nodeId)).lift(0)
    
  2. 仔细检查进入class的Scala session.queryForObject。保留现有查询,但使用classOf[MicroConfig]代替new MicroConfig().getClass