2017-02-16 118 views
1

我认为这是一个基本问题,但我很难得到答案。jpa标准不考虑空格比较两个字符串

问题是:使用CriteriaBuilder和Predicate如何比较字符串而不考虑中间的空格。例如:"CH 525 kV AREIA 1077 PR"CriteriaBuilder库中没有“替换”功能。

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

感谢

回答

1

有一个function方法,它应该做的伎俩你,如果你使用REPLACE作为函数的使用方法:

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

非常感谢您!那是行得通的! – danieltc07

+0

最后的代码是:cb.like( \t \t \t \t \t \t \t cb.upper(cb.function( “替换” \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

太好了。很高兴我能帮上忙 –