Neo4j Spring ogm 导致 followers-followings 概念的 stackoverflow

Neo4j Spring ogm causes stackoverflow for followers-followings concept

尝试实现简单的社交网络概念:关注者 + 关注者。所有只是彼此相关的帐户。使用 Neo4j 和 Spring 引导。

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

Account.class

@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;
}

使用标准 spring CrudRepository(或 Neo4JRepository,没有区别)我经常遇到计算器与帐户一起工作。 A 跟随 B 并且 B 跟随 A 的最简单情况将导致 findById() 的 SOF。我明白它有……与获取深度有关,但它默认为 1,这意味着我应该得到 followersfollowings 的帐户,但他们的关系应该是空的。这些关系在添加方面工作正常:我可以通过添加到适当的 Set 从任何一端连接帐户,图表结果完全符合我的意图,但获取不起作用..

主要问题:我在做什么和理解错了,如何才能正确实现这种关系?

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

和额外的:有没有办法为整个应用程序配置默认深度?无需手动使用 session,从而重新实现所有基本操作..

终于,明白了。真正的问题不在于获取,而是在获取期间某处内部对 equals()hashcode() 的内部调用。由于我使用 lombok@Data,所有属性都参与了这些方法,导致 SOF。

@EqualsAndHashCode(exclude={"followers", "followings"}) 添加到 class 的注释中解决了问题,depth=1 现在可以工作了。