Printemps de Données Mongo - Comment interroger par @DBRef du champ id
Je suis nouveau sur le Printemps de Données Mongo donc, je dois être en train de faire quelque chose de mal parce que je n'arrive pas à exécuter une requête simple. C'est mon modèle:
@Document(collection="brands")
public class Brand{
@Id
private int id;
private String name;
...
//getters-setters
}
@Document(collection="models")
public class Model{
@Id
private int id;
private String name;
@DBRef
private Brand brand;
...
//getters-setters
}
Je voudrais obtenir tous les modèles de la marque, j'ai donc mettre en œuvre les DAO comme suit:
@Repository
public interface IModelDAO extends MongoRepository<Model, Integer>{
@Query(value="{ 'brand.$id' : ?0 }")
public List<Model> findByBrandId(Integer id);
}
Si j'exécute ce mongodb requête dans le shell dans lequel il travaille: db.modelss.find({ 'brand.$id' : 1 })
Mais, l'application Java jette l'exception suivante:
Caused by: java.lang.IllegalAccessError
at org.springframework.data.mapping.PropertyReferenceException.detectPotentialMatches(PropertyReferenceException.java:134)
Apparemment, il est à la recherche d'un champ $id dans la Marque de la classe, et comme il n'existe pas, il échoue. J'ai donc modifier la requête à la suite, de sorte qu'il navigue vers le champ id:
@Query(value="{ 'brand.id' : ?0 }")
Maintenant, il ne jette pas une exception, mais il n'a rien trouvé dans la DB.
Débogage de l'MongoTemplate.executeFindMultiInternal() la méthode peut voir que dans
DBCursor cursor = null;
try {
cursor = collectionCallback.doInCollection(getAndPrepareCollection(getDb(), collectionName));
curseur de la requête est query={ "brand" : 134}
. Il est donc logique de ne pas trouver quoi que ce soit. La modification de la valeur de la requête au cours de débogage pour query={ "marque".$id" : 134} cela fonctionne.
Alors, pourquoi n'est-ce pas correctement la requête traduite?
OriginalL'auteur codependent | 2015-10-19
Vous devez vous connecter pour publier un commentaire.
Le problème a été causé par le
@Id
int type. Le changer en Entier résolu:OriginalL'auteur codependent
essayer ce;
OriginalL'auteur Mohammad Badiuzzaman