Как выполнить поиск объединенного запроса с помощью API Criteria - PullRequest
0 голосов
/ 14 октября 2019

Я попытался выполнить поиск в БД по нескольким полям, используя строку ввода.

Что я получил, используя HQL.

   @Override
    public List<Teacher> searchByString(String str) {

        String[] fields  = {"fam", "name", "otch", "phoneNumber"};
        List<Teacher> result = new ArrayList<>();

        for (int i = 0; i < fields.length-1 ; i++) {
            result.addAll(em.createQuery(
                    "SELECT c FROM Teacher c WHERE lower(c." + fields[i] + ") LIKE lower(?1)")
                    .setParameter("1", "%" + str + "%")
                    .getResultList());
        }

        result.addAll(em.createQuery(
                "SELECT c FROM Teacher c WHERE to_char(c." + "dateOfBirth, 'yyyy-mm-dd'" + ") LIKE ?1")
                .setParameter("1", "%" + str + "%")
                .getResultList());

        return result;
    }

Этот пример работает, но мне нужно иметь его в критериях. Я не нашел ничего о «объединении» в Criteria API. Как я могу достичь этого результата?

...