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);

The parameter statuses is wrongly set to null.

Activity

Former userJune 13, 2016 at 11:42 PM

Fixed in master, 5.2, and 5.1.

Miroslav ŠilhavýJune 3, 2016 at 1:48 PM

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.

Andrea BorieroJune 3, 2016 at 1:38 PM

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Created June 3, 2016 at 11:25 AM
Updated June 30, 2016 at 4:22 PM
Resolved June 13, 2016 at 11:42 PM