Det är konstigt men frågan hanterar inte null särskilt bra. När jag ändrade frågan till:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
det fungerar bra eftersom DAO måste fråga efter märket som NULL. Så om det inte är null, måste jag ha två uppsättningar av frågor, en som är hårdkodad för att välja null enligt ovan, andra till setParam(1, carMake).
Konstigt men jag tror att det här fungerar.