Почему вы не можете использовать критерий, , как это .
Другие варианты (менее хорошие imho):
Создайте два именованных запроса по одному для каждого условия, затем вызовите соответствующий запрос.
Или создайте строку и используйте собственный запрос .
О, вы просто имеете в виду образование струн (?):
query = "Select from Ent where 1=1 "
if(parameter!=null){
query += " and field=:parameter"
}
if(parameter2!=null) {
query += " and field2=:parameter2"
}
(я думаю, что формирование строки ужасно, но, похоже, это то, о чем просили)