Поиск всех записей удовлетворяющих условию с помощью hibernate
Необходимо считать количество всех созданных копий поля логин. к примеру есть логин "ivanov" В БД могу храниться следующие варианты копий
- copy-ivanov
- copy2-ivanov
- copy-copy-ivanov
- copy2-copy-ivanov и так до бесконечности
Нужно написать такой запрос чтобы если я ищу по ivanov, то он мне возвращал только первые два варианта.
Есть очень плохое решение, которое работает но только до 999 и обладает очень большим дублированием кода. необходимо как то прикруть регулярку к нему что то вроде "copy[0-9]*-login" , подскажите как это можно сделать
CriteriaBuilder builder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<Long> query = builder.createQuery(Long.class);
Root<User> rt = query.from(entityClass);
query.select(builder.count(rt))
.where(
builder.or(
builder.like(rt.get("login"), "copy-" + login),
builder.like(rt.get("login"), "copy_-" + login),
builder.like(rt.get("login"), "copy__-" + login),
builder.like(rt.get("login"), "copy___-" + login)
) );