[hibernate-issues] [Hibernate-JIRA] Created: (HHH-5854) ArrayIndexOutOfBounds on fetching onetoone associations using projections

Krishna Sundaresan (JIRA) noreply at atlassian.com
Tue Jan 18 19:55:05 EST 2011


ArrayIndexOutOfBounds on fetching onetoone associations using projections
-------------------------------------------------------------------------

                 Key: HHH-5854
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5854
             Project: Hibernate Core
          Issue Type: Bug
          Components: query-criteria
    Affects Versions: 3.6.0
         Environment: Hibernate version 3.6.0
            Reporter: Krishna Sundaresan
         Attachments: testCase.zip

The loading of OneToOne associations using projections results in an ArrayIndexOutOfBounds exception when the results are loaded by the CriteriaLoader.

The stacktrace is:
{code}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at org.hibernate.loader.criteria.CriteriaLoader.getResultColumnOrRow(CriteriaLoader.java:148)
        at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:639)
        at org.hibernate.loader.Loader.doQuery(Loader.java:829)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
        at org.hibernate.loader.Loader.doList(Loader.java:2533)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
        at org.hibernate.loader.Loader.list(Loader.java:2271)
        at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
        at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
        at testbed.app.HibernateApp.main(HibernateApp.java:24)
Java Result: 1
{code}

The problem seems to be with the way the association aliases and types are used in getResultRow. When the types are fetched, all the types that are mentioned in the projection clause are provided whereas when the aliases to be used are fetched SimpleProjection's getColumnCount method seems to be ignoring columns that do not span resulting in a mis-match of array indices.

{code:title=From CriteriaLoader.getResultRow(...)}
if ( translator.hasProjection() ) {
	Type[] types = translator.getProjectedTypes();
	result = new Object[types.length];
	String[] columnAliases = translator.getProjectedColumnAliases();
...
{code} 

The attached file has a test-case that will demonstrate the problem. Tested that on Hibernate 3.6.0 and derby. I was able to observe this in a case where the association is mapped by a shared primary key but I guess that same should be observable even without a shared primary key.

-- 
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