2011-11-17 5 views
0

Comment stocker des HashMaps dans mongodb en utilisant la morphine?Comment stocker des HashMaps dans mongodb en utilisant la morphine?

Je ne suis pas sûr si c'est un bug dans la morphine, ou si je me trompe.

dire que j'ai ce modèle de domaine

@Entity("person") 
public class Person { 
    private String property1; 
    private String property2; 
    private HashMap<String, Thing> things; 
} 

lorsque je tente de sauver ce en utilisant une classe qui étend BasicDAO repo.save (personInstance) je reçois cette erreur: (UsedView est l'équivalent de chose dans l'exemple ci-dessus)

java.lang.IllegalArgumentException: ne peut pas sérialiser classe com.model.designed.UsedView à org.bson.BSONEncoder._putObjectField (BSONEncoder.java:205) à org.bson.BSONEncoder.putMap (BSONEncoder.java:245) à org.bson.BSONEncoder._putObjectField (BSONEnco der.java:177) à org.bson.BSONEncoder.putObject (BSONEncoder.java:121) à org.bson.BSONEncoder.putObject (BSONEncoder.java:67) à com.mongodb.OutMessage.putObject (OutMessage. java: 189) à com.mongodb.DBApiLayer $ MyCollection.insert (DBApiLayer.java:245) à com.mongodb.DBApiLayer $ MyCollection.insert (DBApiLayer.java:209) à com.mongodb.DBCollection.insert (DBCollection.java:66) à com.mongodb.DBCollection.save (DBCollection.java:622) à l'adresse com.google.code.morphia.DatastoreImpl.save (DatastoreImpl.java:731) à l'adresse com.google.code. morphia.DatastoreImpl.save (DatastoreImpl.java:793) at com.google.code.morphia.DatastoreImpl.save (DatastoreImpl.java:787) à com.google.code.morphia.dao.BasicDAO.save (BasicDAO.java:109) ...

Ensuite, si je l'ai changé:

"private HashMap<String, Thing> things" 

à

"private HashMap<String, String> things" 

sauve ça va.

des pensées?

très apprécié!

Répondre

0

Est-ce que Thing est mappé en tant qu'entité Morphia? Sinon, la morphine ne saura pas comment l'enregistrer pour mongo.

+0

humm, non ce n'est pas. habituellement si je définis dans la chose Chose de la classe; il est persisté correctement. Je vais essayer votre suggestion aujourd'hui et voir ce qui se passe. – Khon

+0

donc j'ai finalement eu le temps d'essayer ce que vous avez suggéré, mais pas de dés. merci bien – Khon

0

vieille question que je me rends compte, mais je suis tombé sur ceci: (non testé)

» ... Cela pourrait contenir tout type de base pris en charge par le pilote MongoDB y compris des listes et des cartes, mais pas d'objets complexes, sauf si vous avez enregistré convertisseurs avec Morphia (par exemple morphia.getMapper().getConverters().addConverter(new MyCustomTypeConverter()) «

De:. http://www.carfey.com/blog/using-mongodb-with-morphia/

Comme dit: non testé

HTH

01..
+0

intéressant, je vais essayer cet essai bientôt. Je suis un peu chargé de travail en ce moment.Je rapporterai bientôt. Merci! – Khon

Questions connexes