我无法从Mongo获取dbRef对象。在我的实体包中,我有一个继承User
类的Parent
类。
这是User
类:
public class User {
@Id
private ObjectId id;
@DBRef
private Account account;
private String name;
public String getId() {
if (id != null) {
return id.toStringMongod();
}
return null;//no id
}
public void setId(ObjectId objectId) {
this.id = objectId;
}
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
}
正如您在上面所看到的,我在这里放置Account
的对象。
我的Parent
课程只是扩展User
:
@Document
public class Parent extends User {
@JsonProperty("is_activated")
private boolean isActivated;
public boolean isActivated() {
return isActivated;
}
public void setActivated(boolean isActivated) {
this.isActivated = isActivated;
}
}
注意:isActivated
没有什么神奇之处。
在我的ParentDaoImpl
课程中:
@Service
public class ParentDaoImpl extends AbstractDaoImpl implements ParentDao {
@Override
public Parent getParentByLogin(String login) {
Query query = new Query(Criteria.where("login").is(login));
return mongoOperations.findOne(query, Parent.class, "parents");
}
}
问题是如果我调用getParentByLogin
方法,它会返回evertyning但Account
字段为空。也许findOne
没有给出dbRef。我认为在关系数据库中,会有像join
这样的东西。我希望我的方法也可以给我account
字段。
感谢您的帮助!
答案 0 :(得分:2)
你可以尝试这样的事吗。
....
@Field("fieldName")
@DBRef(collection = "mongoCollectionName")
private Account account;
....