[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1088?page=c...
]
Michael Grünewald commented on HHH-1088:
----------------------------------------
Sorry, had overlooked, that this solution was already suggested in the bug report.
IdentifierProjection does not work with composite keys
------------------------------------------------------
Key: HHH-1088
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1088
Project: Hibernate Core
Issue Type: Bug
Components: query-criteria
Affects Versions: 3.1 rc2
Reporter: Max Muermann
Attachments: CompositeIdProjection.java, CriteriaLoader.java
When working with Criteria queries, the IdentifierProjection breaks if the entity has a
composite key.
In IdentifierProjection.java:
public String toSqlString(Criteria criteria, int position, CriteriaQuery criteriaQuery)
throws HibernateException {
StringBuffer buf = new StringBuffer();
String[] cols = criteriaQuery.getIdentifierColumns(criteria);
for ( int i=0; i<cols.length; i++ ) {
buf.append( cols[i] )
.append(" as y")
.append(position + i)
.append('_');
}
return buf.toString();
}
This method does not add commas as separators between the column names. Easily fixed by
adding
if (i<col.length-1)
buf.append(",");
as the last statement inside the loop.
However, this leads to another problem:
the type returned by IdentifierProjection.geType is the (single) type of the composite id
component. The query will however return the property values of the id component without a
mapping step.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira