È strano ma la query non gestisce molto bene null. Quando ho modificato la query in:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
funziona bene poiché il DAO deve interrogare il make come NULL. Quindi, se non è nullo, devo avere due set di query, uno che è codificato per selezionare null come sopra, l'altro per setParam(1, carMake).
Strano ma penso che funzioni.