2016-03-23 4 views
2

Springデータの残りを使用しており、@ Queryを使用して2つのオーバーロードされたfindAllメソッドのクエリをカスタマイズしようとしています。慣例によりSpringデータの残りのページングとソートのクエリをカスタマイズする

これらのメソッドが含まれていないURLと呼ばれている

java.lang.IllegalStateException: Ambiguous search mapping detected. Both public abstract org.springframework.data.domain.Page courses.CourseRepository.findAll(org.springframework.data.domain.Pageable) and public abstract java.lang.Iterable courses.CourseRepository.findAll(org.springframework.data.domain.Sort) are mapped to /findAll! Tweak configuration to get to unambiguous paths!

/のfindAll:私はこれをしようとすると、しかし、私はこのエラーが発生しました。ソートされていないコースを取得する(ただし、ページングを使用して)ためのURLは

http://localhost:8080/v1/courses

とソートです。ここかなり簡単です関連するコード、だ

http://localhost:8080/v1/courses?sort=title

です:私もしまし

public interface CourseRepository extends PagingAndSortingRepository<Course, Long> { 

    @Override 
    @Query("SELECT c FROM Course c WHERE c.visible = 'Yes'") 
    Page<Course> findAll(Pageable pageable); 

    @Override 
    @Query("SELECT c FROM Course c WHERE c.visible = 'Yes'") 
    Iterable<Course> findAll(Sort sort); 
} 

は、コースエンティティで@NamedQueryを使用して、同じエラーメッセージを表示しようとしました。

EDIT:

のfindAll(ページング可能ページング可能)メソッドは、しかし、それは結果をソートしない、「ビルトイン」をソートしていることを私が発見しました。次のURLにヒットしてタイトルでソートしようとすると、結果はタイトルではっきりとソートされません。しかし、カスタム@Queryがなければ、結果はソートされます。

http://localhost:8080/v1/courses?sort=title

+0

ソートしないだけで問題はありますか?リポジトリメソッドを呼び出すためのコードを送ることができますか?findAll(Pageable pageable);.実際にソートを設定する場所。 – Shaan

+0

@PremkumarMathivananはSpring Data Restです。findAllの呼び出しは背後にあります。私はそのメソッドを呼び出す特定のコードを持っていません。 – acvcu

+0

私は近くであなたに答えましたか? – Shaan

答えて

0

春のデータのfindallメソッドをオーバーロードしようとしているようです。これはCustomRepositoryによってのみ達成できます。 CustomRepositoryの作成については、linkを参考にしてください。

CustomRepository-カスタムメソッドを使用して、必要に応じてSpringdataのメソッドを調整するクラスを定義できます。同じ

関連する問題