Pas de convertisseur trouvé capable de convertir de type org.bfils.les types.ObjectId de type int
Je suis à l'aide de données du Printemps et mongodb pour obtenir tous Products
à l'aide de cette fonction:
@Repository
public class ProductDao {
@Autowired
private MongoOperations mongoOperations;
public List<Product> getAll() {
return mongoOperations.findAll(Product.class);
}
}
Ma classe de produit:
@Document(collection = Product.COLLECTION_NAME)
public class Product implements Serializable {
public Product() {
}
public static final String COLLECTION_NAME = "product";
@Id
private String _id;
private String name;
private DateTime date_time;
private int fk_properties;
private List<Integer> fk_parts;
}
Erreur:
org.springframework.core.convert.ConverterNotFoundException:
No converter found capable of converting from type org.bson.types.ObjectId to type int
Comment résoudre ce problème?
Mise à JOUR:
J'ai spring-core-4.1.0.RELEASE.jar
dans le dossier lib qui suppose d'inclure convertisseur requis.
Mise à JOUR 2:
Document
{
"_id" : ObjectId("5449567cdf97f277c50d1ce2"),
"name" : "2014 ISF",
"auction_start" : ISODate("2014-12-08T12:00:00.000+0200"),
"auction_end" : ISODate("2014-12-08T14:00:00.000+0200"),
"listed" : "F",
"fk_product_property" : ObjectId("5229567cdf97f277c50d1ce2"),
"fk_parts" : [
ObjectId("5339567cdf97f277c50d1ce2"),
ObjectId("5349567cdf97f277c50d1ce2")
]
}
- Avez-vous des documents dans la collection de produits dont l'id est de type integer?
db.product.find({"_id" : {$type : 16}})
- Il ne renvoie rien lors de l'exécution de
db.product.find({"_id" : {$type : 16}})
en ligne de commande... - Vous pouvez poster votre modèle de document, il nous aidera à déterminer le type de données les problèmes de disparité.
Vous devez vous connecter pour publier un commentaire.
Vous essayez de convertir implicitement un ObjectId à un nombre Entier:
private List<Integer> fk_parts;
devrait être:
private List<ObjectId> fk_parts;
Également noter que
private int fk_properties;
est mappé à rien. Si vous le souhaitez, carte pourfk_product_property
comme je le soupçonne, il convient de:private ObjectId fk_product_property
ou
@Field("fk_product_property") private ObjectId fk_properties;
En tout cas, ce champ doit également être mappé à
ObjectId
ainsi.Votre "clé étrangère" doit être annotée avec @DbRef