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
フィールドがnullであるということです。たぶんfindOne
内部にdbRefを与えないでしょう。リレーショナルデータベースには、のようなものがあると思いますjoin
。私のメソッドにaccount
もフィールドを与えてほしい。
ご協力いただきありがとうございます!