Прежде всего, я не вижу, как это удобно для того, чтобы обернуть Gson.
Что касается вашей проблемы, то информация о самом родовом типе T
не доступна во время выполнения. Он был удален. Он доступен только во время компиляции. Вы хотите параметризовать его с фактическим типом, а не как new TypeToken<List<String>>
.
Из-за отсутствия повторных данных Generics в Java (невозможно выполнить T t = new T()
), сам Gson вынужден использовать подход TypeToken
, как вы видите. В противном случае Гссон сделал бы это более элегантно.
Чтобы иметь возможность передавать фактический тип вокруг, вы должны изобрести ту же самую вещь, что и TypeToken
. И это не имеет смысла :) Просто используйте его повторно или просто используйте Gson прямо, не упаковывая его в какой-то вспомогательный класс.
Считайте подчеркивание символом подстановки. Используйте [_]
.
select * from mn_table where status='Y' and upper(pl_name) like '%[_]5M[_]%';
_
рассматривается в SQL как подстановочный знак, поэтому он фактически пытается сопоставить любой символ. Вы можете обернуть _
в []
. Это должно вернуть то, что вы хотите:
select * from mn_table where status='Y' and upper(pl_name) like'%[_]5M[_]%'
Это будет соответствовать любому символу в квадратных скобках.
В качестве альтернативы, бежать, используя ESCAPE '\'
:
select * from mn_table where status='Y' and upper(pl_name) like'%\_5M\_%' ESCAPE '\'