2017-02-16 2 views
1

Je pense que c'est une question fondamentale, mais j'ai du mal à obtenir une réponse.jpa critères comparer deux chaînes sans tenir compte des espaces

La question est: en utilisant CriteriaBuilder et Predicate comment puis-je comparer les chaînes sans tenir compte des espaces au milieu. Par exemple: "CH 525 kV AREIA 1077 PR". Il n'y a pas de fonction "replace" dans la bibliothèque CriteriaBuilder.

cb.like(equipamento.get(EquipamentoBO_.txNomeLongo), "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%") 

Merci

Répondre

1

Il existe une méthode function qui devrait faire l'affaire pour vous si vous utilisez REPLACE comme la fonction à utiliser:

cb.like(
      cb.function("REPLACE" 
       , String.class 
       , equipamento.get(EquipamentoBO_.txNomeLongo) 
       , cb.literal(" ") 
       , cb.literal("")) 
      , "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%" 
     ) 
+0

Merci beaucoup! Cela fonctionne! – danieltc07

+0

Le code final est la suivante: cb.like ( \t \t \t \t \t \t \t cb.upper (cb.function ("REPLACE" \t \t \t, String.class \t \t \t, equipamento.get (EquipamentoBO_.txNomeLongo) \t \t \t, cb.literal (" ") \t \t \t, cb.literal (""))) \t \t \t, "%" + dto.getTxNomeEquipamento(). ToUpperCase(). Replace ("", "") + "%" \t \t \t) – danieltc07

+0

Très bien. Heureux d'avoir pu aider –