Author: bleny Date: 2013-10-31 18:01:00 +0100 (Thu, 31 Oct 2013) New Revision: 2854 Url: http://nuiton.org/projects/topia/repository/revisions/2854 Log: refs #2086 add an alias in generated query HqlAndParametersBuilder 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 2013-10-31 14:59:51 UTC (rev 2853) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence/HqlAndParametersBuilder.java 2013-10-31 17:01:00 UTC (rev 2854) @@ -54,6 +54,13 @@ protected Set<String> orderByArguments; + protected String alias = "topiaEntity_"; + + public void setAlias(String alias) { + Preconditions.checkArgument(StringUtils.isNotEmpty(alias)); + this.alias = alias; + } + public HqlAndParametersBuilder(Class<E> entityClass) { this.entityClass = entityClass; } @@ -67,7 +74,7 @@ } public void addNull(String property) { - whereClauses.add(property + " is null"); + whereClauses.add(alias + "." + property + " is null"); } public void setParameters(Map<String, Object> parameters) { @@ -92,7 +99,7 @@ addNull(property); } else { String hqlParameterName = putHqlParameterWithAvailableName(property, value); - whereClauses.add(property + " = :" + hqlParameterName); + whereClauses.add(alias + "." + property + " = :" + hqlParameterName); } } @@ -115,26 +122,26 @@ hqlParameterNames.add(hqlParameterName); } } - String inClause = property + " in (:" + StringUtils.join(hqlParameterNames, ", :")+ ")"; + String inClause = alias + "." + property + " in (:" + StringUtils.join(hqlParameterNames, ", :")+ ")"; String whereClause = inClause; if (propertyMayBeNull) { - whereClause = property + " is null or " + inClause; + whereClause = alias + "." + property + " is null or " + inClause; } whereClauses.add(whereClause); } } public void addTopiaIdEquals(String property, String topiaId) { - addEquals(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, topiaId); + addEquals(alias + "." + property + "." + TopiaEntity.PROPERTY_TOPIA_ID, topiaId); } public void addTopiaIdIn(String property, Iterable<String> topiaIds) { - addIn(property + "." + TopiaEntity.PROPERTY_TOPIA_ID, (Iterable) topiaIds); + addIn(alias + "." + property + "." + TopiaEntity.PROPERTY_TOPIA_ID, (Iterable) topiaIds); } public void addContains(String property, Object value) { String hqlParameterName = putHqlParameterWithAvailableName(property, value); - whereClauses.add(":" + hqlParameterName + " in elements(" + property + ")"); + whereClauses.add(":" + hqlParameterName + " in elements(" + alias + "." + property + ")"); } public void addWhereClause(String whereClause) { @@ -149,12 +156,12 @@ public String getHql() { StringBuilder hqlStringBuilder = new StringBuilder(); - hqlStringBuilder.append("from ").append(entityClass.getCanonicalName()); + hqlStringBuilder.append("from ").append(entityClass.getCanonicalName()).append(" ").append(alias); if ( ! whereClauses.isEmpty()) { hqlStringBuilder.append(" where ").append(StringUtils.join(whereClauses, " and ")); } if (CollectionUtils.isNotEmpty(orderByArguments)) { - hqlStringBuilder.append(" order by ").append(StringUtils.join(orderByArguments, ", ")); + hqlStringBuilder.append(" order by ").append(alias).append(".").append(StringUtils.join(orderByArguments, ", " + alias + ".")); } String hql = hqlStringBuilder.toString(); return hql;