2017-11-21 22 views
1

Iは、次のデータモデルスプリングデータのMongoDB findByIdIn

@Document 
public class FormDocument 
{ 
    @Id 
    private String id; 
    private LocalDateTime createTimestamp; 
    ... 
} 

ばねデータリポジトリインターフェース

public interface FormRepository extends MongoRepository<FormDocument, String> 
{ 
    List<FormDocument> findByIdIn(List<String> ids, Pageable pageable); 
} 

を有するがfindByIdIn方法は、IDがMongoDBの中に存在する場合でも、空のリストを返します。私はfindByXXXIn()をテストしました。私のドキュメントの他のフィールドには問題ありません。しかし、ドキュメントIDに関してはそうではありません。

私がmongodbを使っているのは初めてのことですが、私は春のデータjpaに精通しています。

私は約

Iterable<T> findAll(Iterable<ID> ids); 

を知っているが、私はまた、私の場合には有用ではありませんので、その結果にページングを適用する必要があります。

@クエリーを使用して試したところ、List<String>の代わりにList<ObjectId>を試しましたが、成功しませんでした。

私は何が欠けていますか?

+0

あなたの要件は何ですか? IDを渡してFormDocumentを取得したいのですか?または一度に複数のIDが渡されますか? –

+0

@pvpkiran内部的にIDは_idにマッピングされます。 –

+0

データベースでは_idとして格納されていますが、春は変換を処理する必要があります。私は、単一または複数のフォームドキュメントを読み込むいくつかの他のリポジトリメソッドを持っています。結果にidフィールドが設定されているのがわかります。 – user3610405

答えて

0

id変数が_idキーにマップされていない可能性があります。インポートを確認してください

@Id(org.springframework.data.annotation.Id)で注釈が付けられたフィールドは '_id'フィールドにマップされます。

注釈がなく名前が付けられたフィールドは '_id'フィールドにマップされます。

+0

インポートが正常に見えます。 – user3610405

関連する問題