2017-02-16 12 views
1

私は基本的な質問だと思いますが、私は答えを得るのに苦労しています。jpa基準は空白を考慮せずに2つの文字列を比較します

質問は:CriteriaBuilderと述語を使用すると、中間のスペースを考慮せずに文字列を比較する方法を教えてください。例:"CH 525 kV AREIA 1077 PR"。ライブラリCriteriaBuilderには「置換」機能はありません。

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

おかげ

答えて

1

使用する関数としてREPLACEを使用する場合は、あなたのためにトリックを行う必要がありますfunction方法があります:

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を "REPLACE"、String.class \t \t \t、equipamento.get(EquipamentoBO_.txNomeLongo) \t \t \t、cb.literal( " ") \t \t \t、cb.literal(""))) \t \t( ""、 "")+ "%"を置換してください。 \t \t \t – danieltc07

+0

大変です。お役に立てて嬉しいです –

関連する問題