我认为这是一个基本问题,但我很难得到答案。
问题是:使用CriteriaBuilder
和谓词如何在不考虑中间空格的情况下比较字符串。例如:"CH 525 kV AREIA 1077 PR"
。 CriteriaBuilder
库中没有“替换”功能。
cb.like(equipamento.get(EquipamentoBO_.txNomeLongo), "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%")
由于
答案 0 :(得分:2)
如果您使用function
作为要使用的函数,有一个REPLACE
方法可以解决这个问题:
cb.like(
cb.function("REPLACE"
, String.class
, equipamento.get(EquipamentoBO_.txNomeLongo)
, cb.literal(" ")
, cb.literal(""))
, "%" + dto.getTxNomeEquipamento().toUpperCase().replace(" ", "") + "%"
)