Neo4j 将两个不同的对象视为一个对象,因为它们扩展了同一个父对象
Neo4j treating two different objects as one, because they extend the same parent
我目前有两个具有很多共同属性的对象,所以我创建了一个父对象并将所有共同属性移动到父对象中,但是现在当我查看 neo 数据库时,它会像对待父对象一样对待父对象自己的对象并使我的所有节点看起来都是一种类型。
@NodeEntity
public class Cat extends Parent {
private int legs;
}
@NodeEntity
public class Car extends Parent {
private int wheels;
}
public class Parent {
private int id;
private Stirng name;
}
要避免因 class 层次结构而继承标签,您可以使 Parent
抽象或接口。然后,Parent
标签将不会添加到 Cat
和 Car
标签继承的规则可以在这里阅读:https://neo4j.com/docs/ogm-manual/current/reference/#reference:annotating-entities:node-entity
OGM到底从哪里告诉你,它们是一样的?
你能展示一下你是如何初始化对象的吗?还是从数据库加载它们?
基本上 OGM 会根据情况使用 id 或 equals
函数来判断两个对象是否相同。
因为你的 id 是 int
而不是 Integer
或 Long
,它默认初始化为 0。
意思是,如果您现在尝试保存这些对象,OGM 会认为它们是相同的。
也许这就是导致您出现问题的原因。
我目前有两个具有很多共同属性的对象,所以我创建了一个父对象并将所有共同属性移动到父对象中,但是现在当我查看 neo 数据库时,它会像对待父对象一样对待父对象自己的对象并使我的所有节点看起来都是一种类型。
@NodeEntity
public class Cat extends Parent {
private int legs;
}
@NodeEntity
public class Car extends Parent {
private int wheels;
}
public class Parent {
private int id;
private Stirng name;
}
要避免因 class 层次结构而继承标签,您可以使 Parent
抽象或接口。然后,Parent
标签将不会添加到 Cat
和 Car
标签继承的规则可以在这里阅读:https://neo4j.com/docs/ogm-manual/current/reference/#reference:annotating-entities:node-entity
OGM到底从哪里告诉你,它们是一样的? 你能展示一下你是如何初始化对象的吗?还是从数据库加载它们?
基本上 OGM 会根据情况使用 id 或 equals
函数来判断两个对象是否相同。
因为你的 id 是 int
而不是 Integer
或 Long
,它默认初始化为 0。
意思是,如果您现在尝试保存这些对象,OGM 会认为它们是相同的。
也许这就是导致您出现问题的原因。