org.hibernate.query.Query<R> setProperties(Map map); set to null parameters not contained in the map
Description
Example Query query = session.createQuery("SELECT user FROM User user WHERE user.id IN (:ids) AND user.status IN (:statuses)"); query.setParameterList("statuses",statusList); map.put("ids", idList); query.setProperties(map);
Actually there are two bugs hidden in this one. 1. First when I use setParameter
This query works, but the setProperties actually overwrites the value with NULL set up already by setParameter.
2. I use setParameterList
Then query fails on different number in namedParameters.size() + namedParametersList.size() in AbstractQueryImpl#verifyParameters(). As the setProperties map set ups 2 parameters inside namedParameters and 1 parameter in namedParameterLists. But apparently number of parameters is only 2.
I believe that something like map.contains() check in setProperies could fix both issue.
Example
Query query = session.createQuery("SELECT user FROM User user WHERE user.id IN (:ids) AND user.status IN (:statuses)");
query.setParameterList("statuses",statusList);
map.put("ids", idList);
query.setProperties(map);
The parameter statuses is wrongly set to null.