Как использовать функцию mysql в querydsl с инструкцией sql?

#mysql #sql #querydsl

#mysql #sql #querydsl

Вопрос:

Номер телефона в базе данных зашифрован, поэтому я должен использовать функцию дешифрования. Итак, я написал такой код, но он не сработал. Как я могу это сделать?

Вот мой код

     BooleanBuilder builder = new BooleanBuilder();
            if(StringUtils.hasText(memberVO.getSearchTypeCd()) amp;amp; StringUtils.hasText(memberVO.getSearchText())) {
                if(memberVO.getSearchTypeCd().equals("memNm")) {
                    builder.and(info.memNm.contains(memberVO.getSearchText()));
                }
                if(memberVO.getSearchTypeCd().equals("nickNm")) {
                    builder.and(info.nickNm.contains(memberVO.getSearchText()));            
                }
                if(memberVO.getSearchTypeCd().equals("hpNo")) {             
                    //FN_DECRYPT is not working
                    builder.and(info.nickNm.prepend("FN_DECRYPT(").append(")").contains(memberVO.getSearchText()));
                }
            }
  

И я хочу ввести такой тип в sql.

 
WHERE FN_DECRYPT(hpNo) LIKE '0-0000-0000%'

  

Спасибо.

Ответ №1:

Наконец я решил это

 
    BooleanBuilder builder = new BooleanBuilder();
    if(StringUtils.hasText(memberVO.getSearchTypeCd()) amp;amp; StringUtils.hasText(memberVO.getSearchText())) {
        if(memberVO.getSearchTypeCd().equals("memNm")) {
            builder.and(info.memNm.contains(memberVO.getSearchText()));
        }
        if(memberVO.getSearchTypeCd().equals("nickNm")) {
            builder.and(info.nickNm.contains(memberVO.getSearchText()));            
        }
        if(memberVO.getSearchTypeCd().equals("hpNo")) {                             
            builder.and(Expressions.booleanTemplate("FN_DECRYPT({0}) LIKE '%"   memberVO.getSearchText().replaceAll("-", "")   "%'", info.hpNo));
        }
    }