2016-12-19 5 views
1

WHERE節全体をRESTパラメータとして取得し、PagingAndSortingRepositoryに供給したいと考えています。春には可能ですか?私はネイティブSQLでこれを行うことができますが、私はまた、春のページング機能を使用したいと思います。私はwhere節が無限であり、その場合にはすべてのパラメータを解析する必要があるため、QueryDslは私にとってはうまくいかないと思います。Springデータのページネーションの動的ネイティブSQLクエリ

例要求:

localhost:8080/users?page=0&size=5&where=(firstname+eq+john+and+lastname+neq+terry)or([email protected]) 

は、私はそれがあることを期待かなったような:一言で言えば

interface UserDAO extends PagingAndSortingRepository<User, Integer> { 

@Query(value = "SELECT * FROM User ?2", 
     countQuery = "SELECT count(*) FROM User ?2", 
     nativeQuery = true) 
List<User> getUserList(Pageable pageable, String filter); 
}   

、私は、要求 WHERE句を使用して、上記のコードで filterパラメータを変更するものが必要。どんな種類のアイデアでも大歓迎です。

ありがとう...

+0

(強調鉱山):http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ #jpa.query-methods.at-query しかし、私はまだ "InvalidJpaQueryMethodException:ダイナミックソートおよび/またはページネーションでネイティブクエリを使用することはできません" – leventunver

答えて

1

例50のように、カウントクエリも定義する必要があります。ドキュメントから:

実際にネイティブクエリに対して動的ソートを実行することはサポートされていません。実際のクエリが宣言されているため、ネイティブSQLに対してこれを確実に実行することはできません。 ただし、カウントクエリを自分で指定することにより、ネイティブクエリをページネーションに使用することができます。

私はこのリファレンスを見て、これを行うことができるはず

+0

実際に私はそれを行ったが、どちらも動作しませんでした。私は質問を編集させてください。 – leventunver

+0

さて、私は今それを取得しますが、それはリポジトリを動作させません。あなた自身でクエリ全体を構築する必要があります。 – meskobalazs

+0

さて、私は自分でそれを実装する必要があると思います。しかし、とにかく、私はページング可能なネイティブクエリを動作させることができませんでした。だから誰かがそれを行うなら、それはまだかなり良い情報です。 – leventunver