我正在进行一些Neo4J测试并遇到以下特殊问题。我创建了一个小模型,我打算与OGM一起使用。该模型具有超类Entity和子类Child。它们都在包persistence.model
中。实体具有匹配的Long id;
getter所需的getId()
。
public abstract class Entity {
private Long id;
public Long getId() {
return id;
}
}
@NodeEntity
Child extends Entity {
String name;
public Child() {
}
}
创建Child对象并通过OGM持久化它们可以正常工作。我基于文档中的示例并使用Neo4jSessionFactory对象,该对象使用包persistence.model
初始化SessionFactory。生成的数据库包含填写了正确ID的对象。
当我尝试为给定ID获取Child时出现问题。我正在尝试三种方法,使用两个连接系统( bolt 和 ogm ):
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);
前两种方法实际上返回正确的数据。最后一个返回null值。最后一个,使用OGM,有一些明显的好处,我希望能够正确使用它。有人能指出我正确的方向吗?
答案 0 :(得分:1)
在您的测试代码中,您正在按int
类型的ID进行查找。
private int someIdInYourDatabase = 34617;
Neo4j中的内部ID是Long类型。
如果您将ID的类型更改为long
或Long
,那么它将有效。
private long someIdInYourDatabase = 34617;