r2907 - in trunk: topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence topia-persistence/src/main/java/org/nuiton/topia/persistence
Author: bleny Date: 2013-12-03 10:46:26 +0100 (Tue, 03 Dec 2013) New Revision: 2907 Url: http://nuiton.org/projects/topia/repository/revisions/2907 Log: fixes #2853 add a special case for addIn(empty collection) Modified: trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/HqlAndParametersBuilderTest.java trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java Modified: trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/HqlAndParametersBuilderTest.java =================================================================== --- trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/HqlAndParametersBuilderTest.java 2013-12-03 09:19:37 UTC (rev 2906) +++ trunk/topia-it/src/test/java/org/nuiton/topia/it/legacy/persistence/HqlAndParametersBuilderTest.java 2013-12-03 09:46:26 UTC (rev 2907) @@ -31,6 +31,7 @@ import org.nuiton.topia.persistence.TopiaEntity; import java.util.Collection; +import java.util.Collections; public class HqlAndParametersBuilderTest { @@ -126,4 +127,16 @@ } + @Test + public void testAddInWithEmptyValues() { + + hqlAndParametersBuilder.addIn("myProp", Collections.emptyList()); + + String actualHql = hqlAndParametersBuilder.getHql(); + + Assert.assertFalse(actualHql.contains("myProp in (:)")); + Assert.assertTrue(actualHql.contains("myProp in ()")); + + } + } 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 2013-12-03 09:19:37 UTC (rev 2906) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-12-03 09:46:26 UTC (rev 2907) @@ -157,15 +157,21 @@ } } String whereClause; + String inClauseValues; + if (hqlParameterNames.isEmpty()) { + inClauseValues = ""; + } else { + inClauseValues = ":" + StringUtils.join(hqlParameterNames, ", :"); + } if (in) { - String inClause = aliasedProperty + " in (:" + StringUtils.join(hqlParameterNames, ", :")+ ")"; + String inClause = aliasedProperty + " in (" + inClauseValues + ")"; if (propertyMayBeNull) { whereClause = aliasedProperty + " is null or " + inClause; } else { whereClause = inClause; } } else { - String inClause = aliasedProperty + " not in (:" + StringUtils.join(hqlParameterNames, ", :") + ")"; + String inClause = aliasedProperty + " not in (" + inClauseValues + ")"; if (propertyMayBeNull) { whereClause = aliasedProperty + " is not null and " + inClause; } else {
participants (1)
-
bleny@users.nuiton.org