のための高度なコンパレータ、私の春の構成に@EnableSpringDataWebSupport
注釈を追加するには、自動的にクエリでPredicate
クラスを注入することができます:春 - <a href="http://docs.spring.io/spring-data/commons/docs/current/reference/html/#core.web.type-safe" rel="nofollow">official documentation</a>後QueryDslサポート
@RequestMapping(method = RequestMethod.GET, path="/find")
public ResponseEntity<PagedResources<FooResource>> find(Pageable pageable, PagedResourcesAssembler<Foo> assembler, @QuerydslPredicate(root = Foo.class) Predicate predicate) {
Page<Foo> foos = fooRepository.findAll(predicate, pageable)
final ResourceAssemblerSupport<Foo, FooResource> fooResourceAssembler = new ....;
final PagedResources<FooResource> pagedResources = assembler.toResource(foos, fooResourceAssembler);
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
}
GETリクエストを実行するときに、私は簡単に検索することができます。
GET /foo/name?=bob&name=alice&age=20
これは問題なく動作します。しかし、私は、より高度な検索条件を達成するためにどのように思っていた:
>
<
>=
<=
一般的に、私は、数値や日付フィールドにこれらの演算子を適用したいと思います私のデータモデルで。これらの種類の基準はQuerydslでサポートされています。
私は私のクエリパラメータで> (%3E)
を追加しようとしたが、それは、それが数として>10
を解析することはできません文句を言い、年齢のような数値フィールドのために、たとえば(パース失敗。
クエリで直接、この演算子を使用することが可能ですか?
これを実装する方法はありますか?私は似たようなものを実装しようとしてきましたが、成功しませんでした。 – woemler
@woemler私は実際にその問題を現在駐車していますが、それは遠ざかっていません。私は、クエリパラメータを解析するために私自身のコードを書くことになります。スプリングインジェクション機構と一体化する簡単な方法があるかどうかを確認する必要があります。私がそれをすると、私はおそらく春のgithubリポジトリのアドバイスを求めます。面白いことがあれば答えとしてここに書きます。 – phoenix7360