2012-10-15 8 views
0

J'utilise Spring Data pour gérer ma base de données MongoDB.Mongo Spring Data clé "étrangère"

Sur une collection j'ai 2 champs ObjectId, _id et un autre qui référence une instance d'une autre collection.

classe Ma collection est comme:

public class CollectionA 
{ 
private ObjectId id; 
private String collectionADescription 
private ObjectId collectionBId 
} 

avec la classe spécifiée comme cela, je suis en mesure d'insérer la « clé étrangère » comme oid sucessfully de $.

Le problème est que je reçois l'erreur de liaison suivante:

Field error in object 'collectionA' on field 'collectionBId': rejected value []; codes [typeMismatch.collectionA.collectionBId,typeMismatch.collectionBId,typeMismatch.org.bson.types.ObjectId,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [collectionA.collectionBId,collectionBId]; arguments []; default message [collectionBId]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.bson.types.ObjectId' for property 'collectionBId'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.bson.types.ObjectId] for property 'collectionBId': no matching editors or conversion strategy found]

Si je mets la variable collectionBId à Enchaîner les variables sont insérés sous forme de chaîne au lieu de oid

$ Comment puis-je arriver ?

Thans

Répondre

2

Si vous voulez vraiment les relations dans votre magasin de données, vous devez utiliser Spring données MongoDB @DBRef annotations. Mais je vous recommande de reconsidérer/re-concevoir votre schéma en faveur de l'utilisation de documents intégrés. Peut-être que le document this vous aidera à concevoir un meilleur schéma.