Пытается реализовать простую концепцию социальной сети: подписчики + подписчики. Все это просто аккаунты, связанные друг с другом. Использование Neo4j и Spring boot.
'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
, вызывает SOF для findById()
. Я понимаю, что у этого есть что-то. делать с глубиной выборки, но по умолчанию это 1, что означает, что я должен получить followers
и followings
счета, но их отношения должны быть пустыми. Отношения работают правильно с точки зрения добавления: я могу подключить учетные записи с любого конца, добавив к соответствующему Set
, и график получается точно так, как я намереваюсь, но выборка не работает ..
Основной вопрос : Что я делаю и неправильно понимаю, и что можно сделать, чтобы правильно реализовать такого рода отношения?
Я пытался использовать session.load()
с глубиной 0, и без SOF, конечно, но это это не совсем то, что мне нужно. Глубина по умолчанию 1
должна предоставить именно то, что мне нужно, но я полагаю, что я неправильно понимаю концепцию?
И дополнительно : есть ли способ настроить глубину по умолчанию для всего приложения? Без использования session
вручную, таким образом, переопределяются все основные операции c.