2017-02-11 3 views
0

検索文字列とプロジェクトとテナントの2つのパラメータでmongoDBデータベース内のワーキングブックドキュメントを検索します。 これを行う可能性はありますか? これは私の現在の春のデータクエリであるが、それは動作しません:Springデータ - 検索文字列と2つのパラメータによるドキュメント

db.WorkingBook.find().pretty() 
{ 
"_id" : ObjectId("589f2af42f7a97b95842afc6"), 
"_class" : "my.domain.dao.domain.WorkingBook", 
"dateTimeFrom" : ISODate("2017-02-11T15:16:33Z"), 
"dateTimeUntil" : ISODate("2017-02-11T16:17:33Z"), 
"categoryType" : "SERVICE", 
"workingText" : "That's a working book text ", 
"creationDateTime" : ISODate("2017-02-11T15:17:08.550Z"), 
"user" : DBRef("User", ObjectId("5589929b887dc1fdb501cdba")), 
"project" : DBRef("Project", ObjectId("5899eb0dbfb41f1382eac15a")), 
"tenant" : DBRef("Tenant", ObjectId("58500aed747a6cddb55ba094")) 
} 

答えて

0

idフィールドがProjectTenantクラスの両方にあるとします。以下のような

@Id 
private String id; 

DBRef@QueryWorkingBook

@DBRef 
private Project project; 

@DBRef 
private Tenant tenant; 

で注釈

は、検索文字列と一緒にプロジェクトやテナントIDを渡します。

@Query("{$text : { $search : ?0 }, 'project' : ?1, 'tenant' : ?2 }") 
List<WorkingBook> findWorkingBookByProjectAndTenantAndSearchString(final String searchString, final String projectId, final String tenantId); 

注釈 @Queryなくて、リポジトリ内の以下のメソッドを定義することができます。

List<WorkingBook> findByProjectAndTenant(final TextCriteria searchString, final String projectId, final String tenantId); 

コード

TextCriteria textCriteria = new TextCriteria().matching(searchString); 
List<WorkingBook> workingBookList = workingBookRepository.findByProjectAndTenant(textCriteria, projectId, tenantId); 
0

春データは、メソッドから派生したクエリでの注釈からのクエリを結合していない:サンプル文書ザッツ

@Query("{$text : { $search : ?0 } }") 
List<WorkingBook> findWorkingBookByProjectAndTenantAndSearchString(final Project project, final Tenant tenant, 
     final String searchString); 

名。したがって、検索クエリと名前から生成されるものとを組み合わせたい場合は、自分で行う必要があり、アノテーションに入れなければなりません。

+0

を呼び出して、どのように私の場合にはこれを行うために、私は@query注釈やで、どのように実装するのは明らかではありませんよ...?どうもありがとう! – quma

関連する問題