Я не понимаю, почему JPA не может просто позаботиться об этом. Я разделяю ваше разочарование!
Для чего он стоит, я нашел следующее решение работает. Везде, где ваш параметр может быть нулевым (и вы хотите, чтобы запрос возвращал записи с нулевым значением в этом столбце), используйте следующий синтаксис:
String name = "test";
String version = null;
String release = null;
Dependency D = Dependency
.find("name = :name "
+ "and (version = :version or (version is null and :version is null)) "
+ "and (release = :release or (release is null and :release is null)) ")
.setParameter("name", name)
.setParameter("version", version)
.setParameter("release", release)
.first();
Очевидно, что это немного более многословно, но вполне читабельно и ясно показывает, что вы можете ожидать, что параметр иногда может быть нулевым.