これが私の(サンプル)オブジェクトです。Morphia に必要なもの以外の注釈は付けていません。
package jungle;
@Entity
public class Monkey {
String name;
int bananas;
@Embedded
TreeHouse house;
}
そしてTreeHouse
オブジェクト:
@Embedded
public class TreeHouse {
String type;
int distanceFromWater;
}
type
正規表現を使用してクエリを実行しようとしています。これが私が使用しているMongoDBクエリです(コマンドラインで動作することが証明されています):
db.Monkey.find({ "house.type": { "$regex" : ".*coco.*", "$options": "i"}})
オブジェクトのfilter
メソッドを使用して、Java でこの正確な文字列を生成できます。Query
Query query = ...;
query = query.filter("house.type",
Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE));
ただし、Java で検索を実行しようとすると、次のようになりますValidationException
。
com.google.code.morphia.query.ValidationException: The field 'house' could not be
found in 'jungle.Monkey' while validating - house.house.type; if you wish to
continue please disable validation.
の倍増に注意してくださいhouse.house.type
。
私は Morphia のバージョン 0.99 を使用しており、MongoDB Java ドライバーのバージョン 2.5 を使用しています。私は何かを正しくしていませんか?それとも、これは新しいバージョンで修正された問題ですか?