我有类似这样的类层次结构和相应的存储库:
@NodeEntity
@TypeAlias("BASE")
public class Base {
@NodeEntity
@TypeAlias("Child1")
public class Child1 extends Base {
@NodeEntity
@TypeAlias("Child2")
public class Child2 extends Base {
何时
然后它将正确存储Child2类的属性,但它不会存储Child2类的标签。然后我无法使用Child2Repository.findAll方法找到节点。
我有以下测试用例
Child1 child1 = child1Repository.save(new Child1("child1", "prop1"));
Child2 child2 = neo4jTemplate.findOne(child1.getId(), Child2.class);
child2.setProp2("prop2");
child2Repository.save(child2);
Node node = neo4jTemplate.getNode(child1.getId());
logger.info("Labels: {}", node.getLabels());
for (String key : node.getPropertyKeys()) {
logger.info("Property: {}, value: {}", key, node.getProperty(key));
}
assertThat(baseRepository.findAll().as(List.class).size(), is(1));
assertThat(child1Repository.findAll().as(List.class).size(), is(1));
assertThat(child2Repository.findAll().as(List.class).size(), is(1));
输出
Labels: [BASE, Child1, _Child1]
Property: prop2, value: prop2
Property: prop1, value: prop1
Property: name, value: child2
并在最后一行失败。 这是理想的行为还是错误?或者我做错了什么?
github上的示例项目:
答案 0 :(得分:0)
您保存了一个带有 prop1 属性的节点,然后您获取了它,为其添加了 prop2 属性并将其保存,因此最终结果是一个有两个节点的节点属性 prop1 和 prop2 。