読者です 読者をやめる 読者になる 読者になる

SpringDataMongoDBのアップデートを試すめも

1.0.0.M4からアップデートしてなかったので1.1.0.GAにアップデートを試みる。
以下、元のコードを変更する必要があったところのめも。

$orの書き方が変わった

query.or(Query.query(Criteria.where("cnt").exists(false)), Query.query(Criteria.where("cnt").lt(5)));
query.addCriteria(new Criteria().orOperator(Criteria.where("cnt").exists(false)).orOperator(Criteria.where("cnt").lt(5)));

1.0.0.M5から変わったみたい。
Spring Data MongoDB - Reference Documentation

hintの書き方が変わった

List<TestDto> list = mongoTemplate.find(query, TestDto.class, new CursorPreparer() {
	@Override
	public DBCursor prepare(DBCursor cursor) {
	cursor.hint("key_1_id_1");
	return cursor;
	}
}, "collection"));

ちょうめんどくさい。
hint指定するときはsortとかlimitとかskipとかもCursorPreparerの中で書かないといけない。

query.withHint("key_1_id_1");

…!!
らくちん…!!

「_class」を宣言してるクラス名が変わった

org.springframework.data.mongodb.core.convert.DefaultTypeMapper

org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper


「_class」消したいときはこれまで通りDBObject#removeFieldするか、DefaultMongoTypeMapperのコンストラクタの引数が「_class」格納してる変数を書き換えてくれるので、null渡してインスタンス作ればいけるんじゃないかなーとか。
あとDtoのclass宣言につける@TypeAliasってアノテーションも追加されたっぽい。
まだ試してないけど「_class」の名前を任意で変更できるとかそういうアレだと思う。

あとは依存するjarの更新とかが必要みたいだけど、M3からM4ほどの大きな変更は必要なさそうでよかった。

スポンサーリンク