Используйте регулярные выражения в JPA CriteriaBuilder
Я использую JPA CriteriaBuilder для выбора объектов типаMyEntity
из базы данных MySQL следующим образом:
String regExp = "(abc|def)"
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery( MyEntity.class );
root = query.from( MyEntity.class );
predicates = new ArrayList<Predicate>();
predicates.add( cb.like( root.<String>get( "name" ), regExp ) );
Таким образом, результат запроса должен содержать любую сущность, гдеname
значение соответствует заданному regExp. Но список результатов всегда пуст. Изменение regExp на/(abc|def)/g
не имеет никакого эффекта и не добавляет подстановочный знак%
Как заставить сопоставление образца работать?
Альтернативно: как я могу использовать собственный MySQL REGEXP вместе с CriteriaBuilder?