2012-05-29 4 views
0

Je travaille dans mongoDB en java. Je veux enregistrer java Bitset Object dans db et puisque seuls les types natifs de BSON peuvent être convertis à partir de leurs homologues Java, je dois utiliser des librairies mapper.Données de printemps mongoDB enregistrement incomplet java Objet Bitset

J'ai utilisé Mongo Morphia Mapper et enregistré l'objet Bitset avec succès. Mais j'ai besoin de faire la même chose en utilisant Spring Data MongoDB libs. Mais en utilisant spring libs, l'objet Bitset n'est pas sauvegardé et il n'y a pas d'erreur lors de la sauvegarde. Et quand je récupère le même objet, j'obtiens un objet biset vide. Ci-dessous la façon dont les données ont été enregistrées dans la base de données de mongo en utilisant Morphia et Spring respectivement:

Morphia

  1. { "_id": "testid", "name": "printemps", "bit": { "mots": [NumberLong (132)], "wordsInUse": 1, "sizeIsSticky": true}}

printemps

  1. { "_id": "testid", "name": "printemps", "bit": { "mots": [NumberLong (132)]}}

En complaring les deux I remarqué que les informations Biset utilisant le ressort ne sont pas sauvegardées complètement (partie en gras). Cela peut être une raison pour un objet Bitset vide. J'utilise 'spring-data-mongodb-1.0.0.M4.jar' pour sauvegarder. S'il vous plaît, peut-on dire où je me trompe? J'apprécierais votre aide.

Merci

Shubhra


@Asya Kamsky

est le code ci-dessous j'utilise pour enregistrer à l'aide du printemps:

BitSet b = new BitSet(10); 
b.set(2); 
b.set(7); 

MyClass myclass = new MyClass("testid","spring",b); 

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class); 

MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate"); 

mongoOperation.save(myclass); 
+0

Pourriez-vous fournir des exemples d'extraits de votre code pour Spring montrant comment vous enregistrez l'objet? –

+0

Y a-t-il une solution? J'apprécierais toute aide. Merci – Shubhra

+0

Il me semble que le bit _was_ a été défini avec Spring, les mots ont été enregistrés en tant que sous-document appelé "bit" (en gras ci-dessus). Est-il possible que vous récupériez incorrectement les données stockées? En passant, vous pouvez modifier votre publication originale pour ajouter plus d'informations et/ou ajouter des commentaires comme je le fais. Les réponses (ci-dessous) sont réservées aux réponses à votre question initiale, pas aux réponses aux commentaires. –

Répondre

0

La raison pour laquelle vous voyez ce comportement est que le sous-système Spring Data Mapping considère que les champs transitoires ne doivent pas être conservés code d'élévation est dans AbstractPersistenProperty.isTransient()). J'ai déposé un JIRA issue et implémenté et déployé une correction contre les branches 1.3.x et 1.4.x de Spring Data Commons. Vous pouvez déjà utiliser cela en vous référant aux versions instantanées de chaque branche.

+0

Merci beaucoup Oliver. – Shubhra

Questions connexes