Поиск всех записей удовлетворяющих условию с помощью hibernate

Необходимо считать количество всех созданных копий поля логин. к примеру есть логин "ivanov" В БД могу храниться следующие варианты копий

  1. copy-ivanov
  2. copy2-ivanov
  3. copy-copy-ivanov
  4. 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)

            ) );

Ответы (0 шт):