To dziwne, ale zapytanie nie radzi sobie zbyt dobrze z wartością null. Kiedy zmieniłem zapytanie na:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
działa dobrze, ponieważ DAO musi odpytywać markę jako NULL. Więc jeśli nie jest null, muszę mieć dwa zestawy zapytań, jeden, który jest zakodowany na sztywno, aby wybrać null jak powyżej, a drugi to setParam(1, carMake).
Dziwne, ale myślę, że to działa.