0

私はJavaのmongoDBで作業しています。Javaビットセットオブジェクトをdbに保存したいのですが、対応するJavaから変換できるのはBSONネイティブタイプのみであるため、マッパーライブラリを使用する必要があります。

Mongo Morphia Mapperを使用して、ビットセットオブジェクトを正常に保存しました。しかし、SpringDataMongoDBライブラリを使用して同じことを行う必要があります。ただし、spring libsを使用すると、ビットセットオブジェクトは保存されず、保存中にエラーは発生しません。そして、同じオブジェクトを取得すると、空のbisetオブジェクトが取得されます。以下は、それぞれMorphiaとSpringを使用してmongoデータベースにデータが保存された方法です。

モルヒネ

  1. {"_id": "testid"、 "name": "spring"、 "bit":{"words":[NumberLong(132)]、 "wordsInUse":1、 "sizeIsSticky":true} }

バネ

  1. {"_id": "testid"、 "name": "spring"、 "bit":{"words":[NumberLong(132)]} }

2つを比較すると、スプリングを使用したBiset情報が完全に保存されていないことに気付きました(太字部分)。これが空のビットセットオブジェクトの理由である可能性があります。保存に「spring-data-mongodb-1.0.0.M4.jar」を使用しています。どこが間違っているのか誰か教えてください。よろしくお願いします。

ありがとう

Shubhra


@Asya Kamsky

以下は、春を使用して保存するために使用しているコードです。

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);
4

1 に答える 1

0

この動作が見られる理由は、Spring Data Mappingサブシステムが一時フィールドを永続化されていないと見なしているためです(関連するコードはにありますAbstractPersistenProperty.isTransient())。JIRAの問題を提出し、SpringDataCommonsの1.3.xおよび1.4.xブランチに対する修正を実装してデプロイしました。いずれかのブランチのスナップショットバージョンを参照することで、すでにそれを使用できます。

于 2012-06-06T10:44:55.327 に答える