Я пытаюсь обновить Spring Data Neo4J 3 до 4 — я использую Neo4J 2.2.2.
Я использую экземпляр 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() я получаю нулевое значение, потому что набор состояний пуст (не был выбран).
Снова глядя на мой код, я задаюсь вопросом, не потому ли это, что я использую не «родной» метод загрузки из репозитория, а перегруженную версию?