2017-05-19 21 views
0

DB範囲のデータに基づいて検索を行いたい場合は、負の数量の項目もあります。しかし、私は何の兆候にもかかわらず、私は実際の金額に関する基準をjavax.persistence.criteriaを使って適用したいと思います。金額に関係なく金額範囲のJava基準照会

など。クエリー入力:-99、-10、33、90 100

誰もがこの上で私を導くことができる:1と100

の予想される出力との間に?

+0

あなたは 'ABS(フィールド)を使用して'意味ですか?なぜそれが難しいのか、あなたが試したことを説明してください –

+0

こんにちは、次のクエリのためのjpa基準述語が必要です:select * from Table where abs(キャスト(小数点以下桁数(10,2))は1から800までです) – Sachin

+0

やってみました ?そのうちの特定の部分は難しいですか? CriteriaBuilderには、それらすべてのメソッド(abs、cast、between)があります。ああ、それをあなたの質問にコメントに入れてください。 –

答えて

1

SQLクエリ:

select * from table where abs(cast(amount as decimal(10,2))) between 1 and 700 

基準クエリ:

final List<Predicate> predicates = new ArrayList<>(); 
Predicate matchPrice = cb.between(cb.abs(trxRoot.get("amount").as(BigDecimal.class)), minPrice, toAmount); 
predicates.add(matchPrice); 
query.where(predicates.toArray(new Predicate[] {}));