Author: bleny Date: 2014-05-15 18:19:34 +0200 (Thu, 15 May 2014) New Revision: 3107 Url: http://forge.nuiton.org/projects/topia/repository/revisions/3107 Log: fixes #3197 duplicate passed collection to prevent generating HQL with NULL Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2014-05-15 10:32:18 UTC (rev 3106) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2014-05-15 16:19:34 UTC (rev 3107) @@ -135,7 +135,14 @@ } } else { boolean propertyMayBeNull = values.contains(null); - String hqlParameterName = putHqlParameterWithAvailableName(property, values); + Collection<?> hqlParameterValue = values; + if (propertyMayBeNull /* && ! in */) { + // duplicate given collection because we don't want 'null' + // in hqlParameterValue and we don't want side effect on parameters + hqlParameterValue = Sets.newLinkedHashSet(values); + hqlParameterValue.remove(null); + } + String hqlParameterName = putHqlParameterWithAvailableName(property, hqlParameterValue); String whereClause; if (in) { whereClause = String.format(" %s in ( :%s ) ", aliasedProperty, hqlParameterName);