温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - Neo4j Spring ogm causes stackoverflow for followers-followings concept
java neo4j neo4j-ogm spring spring-boot

java - Neo4j Spring ogm导致关注者跟随概念的stackoverflow

发布于 2020-05-01 14:27:33

尝试实施简单的社交网络概念:关注者+关注者。所有仅仅是彼此相关的帐户。使用Neo4j和Spring启动。

'org.springframework.boot' version '2.2.4.RELEASE'
'org.springframework.boot:spring-boot-starter-data-neo4j'

帐户类

@NodeEntity
public class Account {

  @Id
  private String pk;

  @Relationship(type = "FOLLOWS", direction = Relationship.INCOMING)
  private Set<Account> followers;

  @Relationship(type = "FOLLOWS", direction = Relationship.OUTGOING)
  private Set<Account> followings;
}

使用standart spring CrudRepository(或Neo4JRepository没有区别),我不断获得使用帐户的stackoverflows。A遵循BB遵循的最简单情况A将导致产生SOF findById()我了解它具有一定的安全性。与获取深度有关,但它默认为1,这意味着我应该了解到followersfollowings但它们的关系应该为空。该关系在添加方面可以正常工作:我可以通过添加到适当的位置来连接任何一端的帐户,Set并且图形完全符合我的预期,但是提取不起作用。

主要问题:我在做什么并且理解错误,可以采取什么措施正确地实现这种关系?

session.load()当然,我尝试使用深度0,并且没有SOF,但这并不是我真正需要的。默认深度 1应该提供我所需要的,但是我想我误解了这个概念?

另外:有没有一种方法可以为整个应用程序配置默认深度?无需session手动使用,从而重新实现所有基本操作。

查看更多

提问者
Emptyfruit
被浏览
2
Emptyfruit 2020-02-13 20:14

最后,明白了。真正的问题不在于获取,而在于内部调用中equals()以及hashcode()获取期间的某个地方。由于我使用龙目岛@Data,所有属性paricipated在这些方法中,造成SOF。

添加@EqualsAndHashCode(exclude={"followers", "followings"})到类的注释中解决了该问题,并且depth = 1现在可以使用。