如何使用morphia
加载参考文档/实体的两个属性我有这样的班级人员和学校
人类
@Entity
public class Person {
@Id private ObjectId id;
private String name;
@Embedded private PersonEducation schoolInfo;
}
@Embedded
public class PersonEduction {
@Reference private School school;
private String year;
private String degree;
}
学校班级
@Entity
public class School {
@Id private ObjectId id;
private String name;
private String address;
private String description;
}
我如何获得学校人员课程的id和名称字段 例 当我想要人时
Person person = datastore.find(Person.class).field("name").equals("xyz").get();
person.gerSchoolInfo();
回复(不想要所有学校班级字段)
{school:{_id:ObjectId("4fcef3e20364a375e7631fb0"), name:"SchoolA"}, year:"1990", degree:"MBA" }
如果我查询学校_id = ObjectId(" 4fcef3e20364a375e7631fb0"),我得到所有学校字段
{_id:ObjectId("4fcef3e20364a375e7631fb0"), name:"xyz", address="some add", description="some desc"}
答案 0 :(得分:1)
您应该使用
而不是@Reference
key<School> school;
并使用自定义查询加载它。
datastore.createQuery(School.class).retrivedFields(true, "id","name");
答案 1 :(得分:0)
要替代mtariq,请替换
@Reference private School school;
带
private ObjectId schoolId;
并自己获取。但是,由于你的学校课程如此简单,我认为你最好使用延迟加载,所以:
@Reference @Lazy private School school;
这只会在/被引用时加载学校对象。