r2854 - trunk/topia-persistence/src/main/java/org/nuiton/topia/persistence
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;
On Thu, 31 Oct 2013 18:01:00 +0100 (CET) bleny@users.nuiton.org wrote: y'a va bien réussir à nous écrire une petite méthode pour ton alias + property ? allez un petit effort tu y es prèsque.
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;
_______________________________________________ Topia-commits mailing list Topia-commits@list.nuiton.org http://list.nuiton.org/cgi-bin/mailman/listinfo/topia-commits
-- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 http://www.codelutin.com email: chemit@codelutin.com twitter: https://twitter.com/tchemit
participants (2)
-
bleny@users.nuiton.org -
Tony Chemit