Я работаю с устаревшей базой данных и использует данные JPA Spring для доступа к репозиторию. Одна из таблиц имеет столбец идентификатора номера данных, но требование состоит в том, чтобы выполнить частичное совпадение с использованием символа дикой карты. Таким образом, 12 должны соответствовать 1234. Если я пишу родной запрос, я могу сделатьКак избежать преобразования типов для частичных совпадений в столбцах, основанных на численном выражении
select * from table where id like 12%
, но при использовании Spring JPA Criteria API, который обеспечивает безопасность типов, я должен сделать преобразование типа, прежде чем я мог бы использовать как оператор
cb.like(root.get(SomeEntity_.id).as(String.class), str + "%")
Обратите внимание, что я должен добавить .as (String.class), чтобы быть в состоянии выполнить спичку строки с помощью like
оператора. Это приводит к конверсии типа данных и запрос не в состоянии извлечь выгоду из индекса ид
cast(table0_1_.id as varchar(255)) like ?
Есть ли способ, чтобы выполнить подобное состязание для этого столбца, номер без необходимости выполнять преобразование типов?
Имеет смысл. Спасибо за ссылку. – adeelmahmood