Il y a un objet POJO un classique comme ci-dessous:données MongoDB printemps ne peuvent pas chercher @DBRef objets avec "trouver" requête
@Document
public class MyPojo {
@DBRef
@Field("otherPojo")
private List<OtherPojo> otherPojos;
}
Et OtherPojo.java
:
public class OtherPojo{
@Id
private ObjectId _id;
private String someOtherFields;
}
Je ne peux pas en cascade sauver ceux-ci, mais je m'en remets en sauvant d'abord DBRefs puis en sauvegardant ma liste POJO, mais quand j'essaie d'aller chercher toute la liste ou d'en interroger quelques-uns avec le code ci-dessous:
Query query = new Query(Criteria.where("myPojo.blabla").is("blabla"));
List<MyPojo> resultList = mongoTemplate.find(query, MyPojo.class, "myCollection");
il me renvoie une liste de null DBrefs, il compte vrai. Par exemple: il y a 10 DBRefs sauvés, il renvoie 10 objets NULL, mais ses types primitifs et d'autres types qui ne sont pas un DBRref sont tous non-null. Comment puis-je gérer cela?
enregistrer mes objets comme ci-dessous:
for (MyPojo pojo : somePojoList) {
for (OtherPojo otherPojo : pojo.getOtherPojos()) {
mongoTemplate.save(otherPojo, "myCollection");
}
}
// ...
mongoTemplate.insert(myPojoList, "myCollection");
EDIT: OK, maintenant je sais que si je ne spécifie pas un nom de collection quand je sauve otherPojos, je peux les fetch (grâce à @ jmen7070). Mais je dois écrire myCollection parce que je les laisse tomber et les recréer toujours. C'est un cas d'utilisation. Alors, comment puis-je dire "trouver la méthode pour utiliser la même collection pour récupérer DBRefs"?
Pouvez-vous donner plus de détails sur comment sauvegarder les objets dans la base de données? – jmen7070
a mis à jour ma question .. –