我正在使用SDN4,并且在添加新的不同关系时会面临先前关系被删除的问题。这是我的情景,
第1步 使用关系实体创建具有某些关系的节点。 保存关系实体。
第2步 使用Spring Repository和Cypher基于某些属性获取节点并添加新的不同关系。 这是我的fetch API:
@Component("productRepository")
public interface ProductRepository extends GraphRepository<Product>{
@Query("MATCH (c:Product {uuid:{0}}) RETURN c")
Product findByUuid(String uuid);
}
保存关系实体
执行此操作后,步骤1中添加的关系将丢失,但步骤2中的关系仍然存在。
在进行一些调试时,我可以看到使用Cypher和Spring Repository的fetch返回的Node实体对于关系实体具有null值。
注意:如果我不执行第2步,则会正确反映步骤1中的关系。
有人可以让我知道如果我遗漏了某些东西或者这是一个问题。我没有看到在这种情况下指定深度的方法,除非这是在密码中的某个地方。
答案 0 :(得分:0)
对于其他参考,我按照@Luanne的建议遵循选项b。
这是代码段
def getByUuid[T](klazz: Class[T], uuid: String): T = {
IterableUtils.getSingleOrNull(session.loadAll(klazz, new Filter("uuid", uuid), 1))
}
答案 1 :(得分:0)
我知道它永远不会是最后一个答案,但有人可能会遇到这个问题以及...
我猜ogm通过更新它已经涵盖了这个例外。因为上一篇。关系不再被删除。(使用 ogm 2.0.5 &amp; neo4j 3.0.7 进行测试。)
PS。 1深度的查询可以减少你的执行时间真的很糟糕。所以除非必要,否则不要再使用它了。