SpringData使ってMongoDBごにょごにょ

SpringDataDocumentの1.0.0.M3を使ってごにょごにょしてたらcollectionに「_class」って名前でinsertに使ったDTOクラスが完全限定名でぶちこまれてました。
やあよ!やあよ!


MorphiaだとEntityアノテーションに「noClassnameStored」って属性があったのでそこで制御できたんですが…。
どこでやってんだろーなーとソースを眺めたらどうやら「org.springframework.data.document.mongodb.convert.MappingMongoConverter」がやってるみたい。
CUSTOM_TYPE_KEYって名前でStringのフィールド作ってそこに「_class」ってぶちこんでいるかんじ。
しかし特になんかフラグ渡してやれば入れないでくれるというわけでもなさそうな…。
いったいどうすれば…!


こうか…!

DBObject dbObject = new BasicDBObject();
mongoTemplate.getConverter().write(dto, dbObject);
dbObject.removeField(MappingMongoConverter.CUSTOM_TYPE_KEY);
mongoTemplate.getCollection("collection01").save(dbObject, WriteConcern.SAFE);


いやいや…!
うまくいくけど…!いくけども…!!

スポンサーリンク