Neo4j OGM найти узел со связанными с ним узлами - PullRequest
0 голосов
/ 29 августа 2018

У меня есть отношение один ко многим (Модель 1-> Поле N), я хочу найти все модели с их полями. но поля модели - пустой объект.

@NodeEntity
public class Model {
    @Id
    private String id;
    private String name;

    @Relationship(type = "ModelField", direction = Relationship.OUTGOING)
    private List<Field> fields = new ArrayList<Field>();
}

@NodeEntity
public class Field {
    @Id
    private String id;
    private String name;
}

public interface ModelRepo extends Neo4jRepository<Model, String>{
}

public ModelRepo mr;

Iterable<Model> models = mr.findALl();

// the model's fields is empty

1 Ответ

0 голосов
/ 30 августа 2018

Я только что реконструировал ваш сценарий на основе вашего правильного кода, и он работает нормально. Я предполагаю, что при заполнении ваших данных что-то пошло не так. Поскольку этот фрагмент кода отсутствует, я не могу указать вам конкретную причину. Тем не менее, чтобы помочь вам, я обрисовал в общих чертах мои шаги, чтобы получить ваши полевые узлы.

Добавление репозитория FieldRepo:

public interface FieldRepo extends Neo4jRepository<Field, String> {    
}

Заполнение вашего сценария:

Model model = new Model("modelId1", "Model1");

Field field = new Field("fieldId1", "Field1");
model.getFields().add(field);

Field field2 = new Field("fieldId2", "Field2");
model.getFields().add(field2);

modelRepo.save(model);
fieldRepo.save(field);
fieldRepo.save(field2);

Получение вашей информации:

Iterable<Model> resultModels = modelRepo.findAll();
for (Model resultModel : resultModels) {
  System.out.println("Model: " + resultModel.getId() + " " + resultModel.getName());
  for (Field resultField : resultModel.getFields()) {
    System.out.println("\tField: " + resultField.getId() + " " + resultField.getName());
  }
}

В результате вы получите ожидаемый результат:

Model: modelId1 Model1
    Field: fieldId1 Field1
    Field: fieldId2 Field2

Результат - графическое представление

Я надеюсь, что эта информация окажется полезной. Пожалуйста, не стесняйтесь спрашивать какие-либо неясные предметы.

...