Je ne peux pas obtenir l'objet dbRef de Mongo. Dans mon package d'entité, j'ai une classe User
avec une classe Parent
héritant. Voici la classe User
:obtenir dbref à partir du document dans Mongo en utilisant Java
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;
}
}
Comme vous pouvez le voir ci-dessus, je suis en train un objet de Account
ici. Ma Parent
classe qu'étendre 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;
}
}
Note: rien de magique avec isActivated
.
Dans ma classe 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");
}
}
Le problème est que si je l'appelle méthode getParentByLogin
, elle retourne evertyning mais Account
champ est nul. Peut-être findOne
ne donne pas dbRef à l'intérieur. Je pense que dans les bases de données relationnelles, il y aurait quelque chose comme join
. Je veux que ma méthode me donne aussi le champ account
.
Merci pour votre aide!
Vous avez défini quelque chose dans le champ de compte? Si elle renvoie null, je suppose que c'est ... null. Vous ne savez pas si le pilote mongodb java résout automatiquement le dbref. Peut-être que vous avez besoin d'ajouter des annotations (configuration) pour charger automatiquement les dbrefs. – philnate
Je n'ai pas mentionné la classe 'Account' ici. Créer un compte avant que getParentBylogin ne soit fourni. Je veux dire que j'ai d'abord créé un compte pour le parent (je peux l'obtenir dans mongo shell ou via mon application), puis essayé d'obtenir le parent entier – boburShox
Utilisez-vous le pilote mongodb java pur ou un cadre autour de lui comme Spring Data /morphine? @Service ressemble à Spring Data. Peut-être que vous devriez donner un bref exemple de la façon dont vous remplissez votre base de données en premier lieu. Peut-être qu'il y a l'erreur. – philnate