通常我会用这个:
public class Person {
...
@ID ObjectId id;
String name;
@Reference User user;
...
}
它存储用户的$ ref和objectId ......当我请求时我得到了json
Person {
id...
User {
login:
password:
}
}
但"他们"说不使用@Reference,使用手动参考存储
所以代替@Referente使用ObjectId userID;
但如果我使用它,我如何构建json以返回完整的用户?因为我无法做某事person.setUser(userFromDataBaseByStoredReferenceId);
或者我真的必须在课堂上使用2个attbrs,一个用于存储用户的ID,另一个用于#34;用户用户",所以我可以设置它并创建完整的json?
类似的东西:
public class Person {
...
@ID ObjectId id;
String name;
ObjectId userID;
User user; //so i have to fill this to build the full json, after doing a extra search by the userID
}
答案 0 :(得分:0)
谁是“他们”?这取决于您的使用案例:
@Reference
默认情况下急切加载所有引用的实体。如果您总是需要所有这些数据,这是正确的方法。lazy
属性添加到参考注释中。它只会在您实际访问数据时加载数据。person.getUser()
那样访问它。PS:您的JSON示例看起来有点像嵌入式实体。也许这对您的场景来说是更好的方法?
答案 1 :(得分:0)
您可以使用@PostLoad方法通过其id加载引用的实体。
@PostLoad
void postLoad() {
this.user = UserDAO.get(userID);
}