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

chris bono (JIRA) noreply at atlassian.com
Fri Jan 12 08:49:44 EST 2007


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1088?page=all ]

chris bono updated HHH-1088:
----------------------------

    Attachment: CompositeIdProjection.java

I did not modify the core IdentifierProjection, but simply created another projection class. Ultimately these changes shoudl be integrated into IdentifierProjection.

1) getColumnAliases() modified to return the number of aliases that the component (composite key) is made up of.

2) toSqlString() properly generates commas in the list of aliases



> IdentifierProjection does not work with composite keys
> ------------------------------------------------------
>
>          Key: HHH-1088
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1088
>      Project: Hibernate3
>         Type: Bug

>     Versions: 3.1 rc2
>     Reporter: Max Muermann
>     Priority: Minor
>  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