Я пытаюсь обновить данные Spring Neo4J с 3 по 4 - я использую Neo4J 2.2.2.Весенние данные Neo4J 4 - нет template.fetch()
Я использую экземпляр GraphRepository для запроса базы данных, возврата объекта обратно.
Этот объект имеет несколько связей, которые не выбраны (преднамеренно, чтобы избежать чтения на всем графике).
В коде SDN3 просто используется класс Neo4JTemplate для выполнения вызова выборки для каждой связи, которую мне нужно было получить. Это работало очень хорошо.
Однако в SDN4 это средство было удалено и заменено различными реализациями метода load(). Из документации не ясно, как добиться того, что я сделал в SDN3.
Чтобы быть ясным: если у меня есть набор объектов в первом классе, который я извлекаю, управляемый отношениями, я хочу получить только объекты в этом наборе, а не весь набор этих объектов в базе данных.
Я пропустил что-то важное в процессе обновления, или есть простой способ сделать то, что я пытаюсь сделать?
Добавление кода:
Мой объект класса:
@NodeEntity
public class File implements MetroNode {
private Long id;
private String fileName;
private SourceState sourceState;
private Set<State> states;
@GraphId
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
@Relationship(type = "HAS_FILE", direction = Relationship.INCOMING)
public SourceState getSourceState() {
return sourceState;
}
public void setSourceState(SourceState sourceState) {
this.sourceState = sourceState;
}
public State addState(MetroNode otherNode, StateStatus status) {
if (this.states == null) {
this.states = new HashSet<State>();
}
State state = new State(this, otherNode, status.toString());
this.states.add(state);
return state;
}
@Relationship(type = "HAS_STATE", direction = Relationship.OUTGOING)
public Set<State> getStates() {
return states;
}
public State getActiveState() {
if (this.states != null) {
for (State state : this.states) {
if (state.isActive()) {
return state;
}
}
}
return null;
}
}
Мой репозиторий Класс:
public interface FileRepository extends GraphRepository<File> {
File findByFileName(String fileName);
}
При выполнении метода getActiveState() я получаю нулевой возврат, поскольку состояния Set пусто (не выбрано).
Глядя на мой код, интересно, не потому ли, что я не использую «родной» метод загрузки из репозитория, а перегруженную версию?
Спасибо за ваш быстрый ответ. Я прочитал документ, к которому вы ссылаетесь, и содержит это предложение. «По умолчанию загрузка экземпляра будет отображать простые свойства этого объекта и связанные с ним объекты (т. Е. Depth = 1)». Это, похоже, не так в моем app, где набор объектов, заданных отношением, не заполняется. Я не понял здесь ситуацию? – TrueDub
Это звучит не так. Глубина по умолчанию 1 должна загружать связанные объекты. Можете ли вы обновить свой вопрос с помощью какого-либо кода или теста и любых строк, представляющих интерес в журнале отладки? – Luanne
Код добавлен - вся помощь приветствуется, спасибо. – TrueDub