Вы можете использовать sqlRestriction для вызова собственной функции декодирования.
session.createCriteria (Table.class) .add (Restrictions.sqlRestriction ("decode ({псевдоним} .firstName, null, {alias} .lastName, {alias} .firstName) "))
В HQL у диалекта Oracle уже есть функции coalesce и nvl, или, если вам действительно нужно декодировать, вы можете создать подкласс диалекта и добавитьэто как пользовательская функция.Я не знаю, поддерживает ли Hibernate число аргументов переменной длины, как декодирование, но в худшем случае вы можете создать decode1, decode2 и т. Д. Для поддержки различного числа аргументов.
Или, если вы не 't, используя столбец в каталоге where или group by, вы можете просто вернуть оба атрибута и выполнить проверку в Java.