Ini aneh tetapi kueri tidak menangani null dengan sangat baik. Ketika saya mengubah kueri menjadi:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
ini berfungsi dengan baik karena DAO perlu meminta make sebagai NULL. Jadi jika bukan null, saya perlu memiliki dua set kueri, satu yang di-hardcode untuk memilih null seperti di atas, yang lain ke setParam(1, carMake).
Aneh tapi menurut saya ini berhasil.