Author: athimel Date: 2014-02-27 12:19:36 +0100 (Thu, 27 Feb 2014) New Revision: 3022 Url: http://nuiton.org/projects/topia/repository/revisions/3022 Log: fixes #3100 Fix generated IN syntax 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-02-26 16:48:53 UTC (rev 3021) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2014-02-27 11:19:36 UTC (rev 3022) @@ -104,10 +104,14 @@ Preconditions.checkNotNull(values); // TODO brendan 02/10/13 if value is instanceof TopiaEntity, we can check type // TODO brendan 02/10/13 do not use HQL parameters of Object are primitive - String aliasedProperty = alias + "." + property; - String hqlParameterName = putHqlParameterWithAvailableName(property, values); - String whereClause = aliasedProperty + " in (:" + hqlParameterName + ")"; - whereClauses.add(whereClause); + if (values.isEmpty()) { + whereClauses.add(" 1 = 0 "); + } else { + String aliasedProperty = alias + "." + property; + String hqlParameterName = putHqlParameterWithAvailableName(property, values); + String whereClause = String.format(" %s IN ( :%s ) ", aliasedProperty, hqlParameterName); + whereClauses.add(whereClause); + } } public void addNotIn(String property, Collection<?> values) { @@ -115,10 +119,14 @@ Preconditions.checkNotNull(values); // TODO brendan 02/10/13 if value is instanceof TopiaEntity, we can check type // TODO brendan 02/10/13 do not use HQL parameters of Object are primitive - String aliasedProperty = alias + "." + property; - String hqlParameterName = putHqlParameterWithAvailableName(property, values); - String whereClause = aliasedProperty + " not in (:" + hqlParameterName + ")"; - whereClauses.add(whereClause); + if (values.isEmpty()) { + whereClauses.add(" 1 = 1 "); + } else { + String aliasedProperty = alias + "." + property; + String hqlParameterName = putHqlParameterWithAvailableName(property, values); + String whereClause = String.format(" %s NOT IN ( :%s ) ", aliasedProperty, hqlParameterName); + whereClauses.add(whereClause); + } } public void addTopiaIdEquals(String property, String topiaId) {