Neo4J OGM Session.load(ID) returns 现有 ID 的空对象

Neo4J OGM Session.load(ID) returns null object for existing ID

我正在对以下特殊问题进行一些 Neo4J 测试和 运行。我创建了一个小模型,打算与 OGM 一起使用。该模型有一个超级 class 实体和一个子 class 子实体。它们都在包 persistence.model 中。实体具有匹配的 getId() getter.

所需的 Long id;
public abstract class Entity {
   private Long id;
   public Long getId() {
      return id;
   }
}

@NodeEntity
Child extends Entity {
   String name;
   public Child() {
   }
}

创建子对象并通过 OGM 持久化它们工作正常。我基于文档中的示例并使用 Neo4jSessionFactory 对象,它使用包 persistence.model 初始化 SessionFactory。生成的数据库包含填充了正确 ID 的对象。

当我尝试获取给定 ID 的子项时出现问题。我正在尝试使用两种连接系统(boltogm)的三种方法:

boltSession.run("MATCH (a:Child) WHERE id(a) = {id} RETURN a", parameters("id", childId));

ogmSession.query("MATCH (a:Child) WHERE id(a) = $id RETURN a", params);

ogmSession.load(Child.class, childId, 1);

前两种方法实际上return正确的数据。最后一个 return 是空值。最后一个,使用 OGM,有一些明显的好处,我希望能够正确使用它。谁能指出我正确的方向?

在您的测试代码中,您正在通过 int 类型的 ID 进行查找。

private int someIdInYourDatabase = 34617;

Neo4j 中的内部 id 是 Long 类型。

如果您将 id 的类型更改为 longLong 那么它将起作用。

private long someIdInYourDatabase = 34617;