Prevenção de injeção de SQL com hibernação

Eu tenho um código existente, onde o aplicativo gera diferentes sql dependem de muitas condições e executá-los através de sessões de hibernação createSQLQuery (). Aqui os parâmetros são concatidos com a string sql que reside na classe java como uma substituição normal de string. O problema aqui é agora eu preciso evitar injeções de sql. Então para isso eu tenho que usar getNamedQuery () e ligar os parâmetros para que o hibernate cuide de caracteres especiais. Mas o problema é mover a string SQL para o arquivo xml é uma sobrecarga porque condicionalmente gerando sql. Então decido fazer manualmente a validação de caracteres especiais e anexá-la à consulta de string e executá-la como está agora. Então, eu verificar a fonte para PrepareStatement eu encontrei, basta jogar uma exceção

byte[] arrayOfByte1 = new byte[0];
try
{
   arrayOfByte1 = CharsToBytes(this.OdbcApi.charSet, arrayOfChar);
}
   catch (UnsupportedEncodingException localUnsupportedEncodingException) {
}

Como posso fazer o mesmo tipo de codificação na classe java como acima para os parâmetros antes de concat-los com a consulta de string para eliminar injeções de sql? Ou existe alguma maneira que eu ainda possa manter a string sql, pois é um append parâmetros e usar o modo de hibernação para executar a consulta?

questionAnswers(2)

yourAnswerToTheQuestion