2017-05-19 5 views
0

Je souhaite effectuer une recherche sur des données db en fonction de la fourchette de quantité. Certains éléments de quantité sont également négatifs. Mais je, indépendamment de tout signe que je veux appliquer mes critères sur le montant réel en utilisant javax.persistence.criteria.Demande de critères Java pour la plage de montants, quel que soit le signe de quantité

E.g. Entrée de requête: entre 1 et 100

Sortie prévue: -99, -10, 33, 90 100

Quelqu'un peut-il me guider à ce sujet?

+0

vous voulez dire en utilisant 'ABS (champ)'? S'il vous plaît expliquer pourquoi c'est difficile et ce que vous avez essayé –

+0

Salut, je veux jpa critères prédicat pour la requête suivante: sélectionnez * Table où abs (cast (montant comme décimal (10,2))) entre 1 et 800. – Sachin

+0

alors que as-tu essayé ? quelle partie particulière de cela est difficile? il y a des méthodes sur CriteriaBuilder pour tous ceux-là (abs, cast, between). Oh, et mettez cela dans VOTRE QUESTION, pas dans les commentaires –

Répondre

1

Sql Requête:

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

Critères de requête:

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[] {}));