Het is raar, maar de query kan null niet goed verwerken. Toen ik de zoekopdracht veranderde in:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
het werkt prima omdat de DAO het merk als NULL moet opvragen. Dus als het niet null is, heb ik twee sets query's nodig, een die hardgecodeerd is om null te selecteren zoals hierboven, een andere voor setParam(1, carMake).
Vreemd, maar ik denk dat dit werkt.