Author: athimel Date: 2011-09-21 09:40:09 +0200 (Wed, 21 Sep 2011) New Revision: 2333 Url: http://nuiton.org/repositories/revision/topia/2333 Log: #1745 Cannot use a function on TopiaQuery Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaQueryTest.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2011-09-13 10:09:10 UTC (rev 2332) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2011-09-21 07:40:09 UTC (rev 2333) @@ -735,6 +735,11 @@ if (dot != -1) { valueName = paramName.substring(dot + 1); } + + // If the paramName contains a function, escape parenthesis + valueName = valueName.replace('(', '_'); + valueName = valueName.replace(')', '_'); + if (getParams().contains(valueName)) { valueName = valueName + "_" + RandomStringUtils.randomAlphanumeric(4); Modified: trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaQueryTest.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaQueryTest.java 2011-09-13 10:09:10 UTC (rev 2332) +++ trunk/topia-persistence/src/test/java/org/nuiton/topia/framework/TopiaQueryTest.java 2011-09-21 07:40:09 UTC (rev 2333) @@ -174,4 +174,13 @@ } + @Test + public void testWhereWithFunction() { + TopiaQuery query = new TopiaQuery(QueriedEntity.class); + query.addWhere("lower(name)", TopiaQuery.Op.LIKE, "%azerty%"); + log.debug("Query : " + query); + Assert.assertEquals("FROM " + QueriedEntity.class.getName() + + " WHERE lower(name) LIKE :lower_name_", query.fullQuery()); + } + }