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,这意味着我应该得到 followers
和 followings
的帐户,但他们的关系应该是空的。这些关系在添加方面工作正常:我可以通过添加到适当的 Set
从任何一端连接帐户,图表结果完全符合我的意图,但获取不起作用..
主要问题:我在做什么和理解错了,如何才能正确实现这种关系?
我尝试使用深度为 0 的 session.load()
,当然没有 SOF,但这并不是我所需要的。默认深度 1
应该提供我所需要的,但我想我误解了这个概念?
和额外的:有没有办法为整个应用程序配置默认深度?无需手动使用 session
,从而重新实现所有基本操作..
终于,明白了。真正的问题不在于获取,而是在获取期间某处内部对 equals()
和 hashcode()
的内部调用。由于我使用 lombok 和 @Data
,所有属性都参与了这些方法,导致 SOF。
将 @EqualsAndHashCode(exclude={"followers", "followings"})
添加到 class 的注释中解决了问题,depth=1 现在可以工作了。
尝试实现简单的社交网络概念:关注者 + 关注者。所有只是彼此相关的帐户。使用 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,这意味着我应该得到 followers
和 followings
的帐户,但他们的关系应该是空的。这些关系在添加方面工作正常:我可以通过添加到适当的 Set
从任何一端连接帐户,图表结果完全符合我的意图,但获取不起作用..
主要问题:我在做什么和理解错了,如何才能正确实现这种关系?
我尝试使用深度为 0 的 session.load()
,当然没有 SOF,但这并不是我所需要的。默认深度 1
应该提供我所需要的,但我想我误解了这个概念?
和额外的:有没有办法为整个应用程序配置默认深度?无需手动使用 session
,从而重新实现所有基本操作..
终于,明白了。真正的问题不在于获取,而是在获取期间某处内部对 equals()
和 hashcode()
的内部调用。由于我使用 lombok 和 @Data
,所有属性都参与了这些方法,导致 SOF。
将 @EqualsAndHashCode(exclude={"followers", "followings"})
添加到 class 的注释中解决了问题,depth=1 现在可以工作了。