Супер интересное обсуждение этого находится в co-создателе Unix Ken Thompson Премия Turing лекция.
Он начинается с:
то, Что я собираюсь описать, является одним из многих "курица и яйцо" проблемы, которые возникают, когда компиляторы записаны на их собственном языке. В этой простоте я буду использовать определенный пример от компилятора C.
и доходы, чтобы показать, как он записал версию компилятора C Unix, который будет всегда позволять ему входить в систему без пароля, потому что компилятор C распознал бы программу входа в систему и добавил бы в специальном коде.
второй шаблон нацелен на компилятор C. Заменяющим кодом является Этап I самовоспроизводящаяся программа, которая вставляет обоих Троянских коней в компилятор. Это требует фазы изучения как в примере Этапа II. Сначала мы компилируем измененный источник с нормальным компилятором C для создания двоичного файла с ошибками. Мы устанавливаем этот двоичный файл как чиновник C. Мы можем теперь удалить ошибки из источника компилятора, и новый двоичный файл повторно вставит ошибки каждый раз, когда это компилируется. Конечно, команда входа в систему останется с ошибками без трассировки в источнике где угодно.
Поскольку вы «И» - объединяя все ваши ограничения, группировка не имеет значения, поэтому вы можете просто продолжить, как во втором примере, поскольку их разбиение на подгруппы ничего не даст, например,
.add(Restrictions.eq("referenceID", referenceId)).add(Restrictions.eq("verificationType", type)).add(Restrictions.eq("username", username))...
Вы действительно столкнулись с этой проблемой, когда вам нужно группируйте смешанные запросы «И» и «ИЛИ», если вы хотите сгруппировать несколько значений «ИЛИ», вы также можете добавить критерии к дизъюнкции
Добавление этих ограничений по отдельности создает между ними отношение «И». Этого достаточно для того, что вам нужно.
но теперь я не знаю, какой между ними используется логический оператор.
Хорошие ответы уже есть, но вы можете использовать свойство hibernate.show_sql
, установить его в значение true, и вы сможете точно увидеть, какой sql ваш критерий производит.