java - Neo4j OGM 查找节点及其相关节点
问题描述
我有一对多的关系(模型 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
解决方案
我刚刚根据您的正确代码重建了您的场景,并且效果很好。我假设通过填充您的数据出了点问题。由于缺少那段代码,我无法指出具体原因。尽管如此,为了帮助您,我概述了检索您的字段节点的步骤。
添加 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
我希望这些信息对您有所帮助。请不要犹豫,询问任何不清楚的项目。
推荐阅读
- javascript - 从外部脚本更改或访问 Vue.js 方法
- kubernetes - 等待部署真正缩小的惯用方式
- python - 自定义 Tensorflow 数据集的类型规范
- c# - 如何仅使用组织中的 Azure Active Directory 访问 Azure Blob 存储中的 Blob 数据
- wordpress - the_tags() 与 ACF
- javascript - 我需要创建 RegExp 来验证 URL
- python - 如何在游戏示例中处理非常深的递归调用
- swift - Uber Needle DI 在非反应性上下文中的使用
- android - 如何测试 Robolectric 中的偏好设置?
- laravel - 集合资源中的“with”方法在另一个集合资源中调用不会返回