[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-1088) IdentifierProjection does not work with composite keys

Gail Badner (JIRA) noreply at atlassian.com
Wed Mar 17 15:31:32 EDT 2010


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gail Badner updated HHH-1088:
-----------------------------

    Fix Version/s:     (was: 3.3.x)

Full support for composite ID and component projections will require additions to the API. 

I'm creating EnhancedProjection, which extends Projection and adds the required methods.

SimpleProjection, PropertyProjection, ProjectionList, and some other classes that extend Projection will be changed to extend EnhancedProjection.

> 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
>            Assignee: Gail Badner
>             Fix For: 3.5.0.Next
>
>         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.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list