[尝试实施简单的社交网络概念:关注者+关注者。所有仅仅是彼此相关的帐户。使用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;
}
使用标准弹簧CrudRepository
(或Neo4JRepository
,没有区别),我不断在帐户中使用stackoverflows。 A
跟随B
而B
跟随A
的最简单情况将导致findById()
发生SOF。我了解它具有一定的安全性。与获取深度有关,但默认值为1,这意味着我应该获得followers
和followings
帐户,但它们的关系应该为空。该关系在添加方面可以正常工作:我可以通过添加到适当的Set
来从任何一端连接帐户,并且图形完全符合我的预期,但是提取不起作用。
主要问题:
我在做什么并且理解错了,可以做些什么来正确实现这种关系?当然,我尝试使用深度为0且没有SOF的session.load()
,但这并不是我真正需要的。默认深度1
应该恰好提供了我所需要的,但是我想我误解了这个概念?
和额外
:是否可以为整个应用程序配置默认深度?无需手动使用session
,因此可以重新实现所有基本操作。[尝试实施简单的社交网络概念:关注者+关注者。所有仅仅是彼此相关的帐户。使用Neo4j和Spring启动。 'org.springframework.boot'版本'2.2.4.RELEASE'...
最后,明白了。真正的问题不在获取中,而是在获取期间内部调用equals()
和hashcode()
。由于我将lombok
@Data
一起使用,因此所有属性都参与了这些方法,导致出现SOF。