2

このチュートリアルに従ってMongoDBをセットアップしました

http://www.littlelostmanuals.com/2011/09/spring-mongodb-type-safe-queries.html

すべてが期待どおりに機能しますが、複数のフィールドに対してクエリを実行できるようにしたいところに行き詰まっています。

現在、保存している各タイプのリポジトリ インターフェイスがあり、単一のフィールドをうまく検索できます。

public interface StartedEventRepository extends 
    MongoRepository<DatablockStartedEvent, String>,
    QueryDslPredicateExecutor<DatablockStartedEvent> { 

}

以下は、単一のパラメーターのクエリです。

        return startedEventRepo
            .findOne(QDatablockStartedEvent.datablockStartedEvent.searchId
                    .eq(searchId));

次のようなクエリ オブジェクトを作成することは可能ですか。

if(someName != null){
    query.where(QMyClass.name.eq(someName));
}
if(someTime != null){
    query.where(QMyClass.time.eq(someTime));
}

List result = query.list();

MongodbQuery を調べてみましたが、うまくいきませんでした。何か案は?

http://www.mkyong.com/mongodb/spring-data-mongodb-update-document/の例を見ましたが、これは mongoTemplate を使用しています。リポジトリを介してこれを達成する方法はありませんか?そうでない場合、それらは役に立たないのですか?

4

2 に答える 2

9

それは可能であるべきです。このようなものかもしれません

BooleanBuilder builder = new BooleanBuilder();

if(someName != null){
    builder.and(QMyClass.name.eq(someName));
}
if(someTime != null){
    builder.and(QMyClass.time.eq(someTime));
}

repository.findAll(builder.getValue())
于 2012-05-30T06:38:17.990 に答える
1

Spring Data を使用したことがない場合、このhttp://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/#mongodb.repositories.queriesを読むことから推測できます。メソッド名がクエリ構造を示すリポジトリでメソッドを宣言するだけです (この推測は、同じサイトの例 4.3 でサポートされています)。わからない 動的クエリを生成できるかどうかは、クイック検索で明らかになったのはこれだけでした。

于 2012-05-29T18:02:49.050 に答える