使用Java从Mongo中的文档获取dbref

时间:2013-02-21 07:30:18

标签: java mongodb dbref

我无法从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字段。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

你可以尝试这样的事吗。

....
@Field("fieldName")
@DBRef(collection = "mongoCollectionName")
private Account account;
....