2011-07-26 7 views
3

ここに私の(サンプル)オブジェクトがあります。私はMorphiaのために必要な何のほか、他の注釈を入れていない:MongoDB Javaドライバ/ Morphiaがプロパティを2度追加するのはなぜですか?

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"}}) 

私はQueryオブジェクトからfilterメソッドを使用してJavaでこの正確な文字列を生成することができるよ:

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. 

注:私はJavaで検索を実行しようとすると、

Query query = ...; query = query.filter("house.type", Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE)); 

はしかし、私はValidationExceptionを取得しますhouse.house.typeの倍加。

私はMorphiaのバージョン0.99を使用しています。バージョン2.5のMongoDB Javaドライバを使用しています。私は何か正しくしていないのですか?それとも、これは新しいバージョンで修正された問題ですか?

答えて

3

このトリックを試してみてください、それは私の作品:

query = query.disableValidation().filter("house.type", 
       Pattern.compile(".*coco.*", Pattern.CASE_INSENSITIVE)); 
関連する問題