奇妙ですが、クエリはnullをうまく処理しません。クエリを次のように変更したとき:
Query query = getSession().createQuery("from Car as c where " +
"c.carModel = ? AND c.carMake is null").setParameter(0, carModel);
DAOはmakeをNULLとしてクエリする必要があるため、正常に機能します。したがって、nullでない場合は、2セットのクエリが必要です。1つは上記のようにnullを選択するようにハードコードされており、もう1つはsetParam(1、carMake)にハードコードされています。
奇妙ですが、これはうまくいくと思います。