[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6730) Query#setParameterList silently overwrites previous parameters
Alexander Keul (JIRA)
noreply at atlassian.com
Thu Oct 13 10:41:19 EDT 2011
Query#setParameterList silently overwrites previous parameters
--------------------------------------------------------------
Key: HHH-6730
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6730
Project: Hibernate Core
Issue Type: Improvement
Components: query-hql, query-sql
Affects Versions: 3.6.6
Reporter: Alexander Keul
Priority: Minor
When setting a parameter list on a query Hibernate's expandParameterList silently overwrites existing parameters.It requires a very specific set of conditions to be an issue, but I believe Hibernate should at least throw an exception rather than continuing on it's merry way. The issue is specifically found at the end of the function, line 789-796 in 3.6.2.FINAL. Hibernate aliases the expanded parameterlist based on the original name (:param0 -> :param00_, :param01_, etc), which can cause issues if
1) The parameters are themselves sublists, or are for some other reason named with numbers at the end
and
2) The parameter lists contain at least 10 items.
For example
:param1 expands to :param110_ (11th element)
:param11 expands to :param 110_ (1st element)
The problem could be avoided by changing the name expansion into
while ( iter.hasNext() ) {
String alias = ( isJpaPositionalParam ? 'x' + name : name ) + i++ + '_';
Object oldVal = namedParamsCopy.put( alias, new TypedValue( type, iter.next(), session.getEntityMode() ) );
if ( oldVal != null ) {
throw new QueryException("Named parameterlist " + name + " expands into an ambiguous parameter");
}
list.append( ParserHelper.HQL_VARIABLE_PREFIX ).append( alias );
if ( iter.hasNext() ) {
list.append( ", " );
}
}
No patch or testcast attached at this time, but if one's requested I can see if I can't get one up reasonably soon.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list