[hibernate-issues] [Hibernate-JIRA] Commented: (EJB-435) @SqlResultSetMapping gives Invalid Column for columns not in select clause

P G (JIRA) noreply at atlassian.com
Thu Jun 25 04:38:35 EDT 2009


    [ http://opensource.atlassian.com/projects/hibernate/browse/EJB-435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33467#action_33467 ] 

P G commented on EJB-435:
-------------------------

Hi,
Is plan to resolve this issue in near future?

> @SqlResultSetMapping gives Invalid Column for columns not in select clause
> --------------------------------------------------------------------------
>
>                 Key: EJB-435
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-435
>             Project: Hibernate Entity Manager
>          Issue Type: Bug
>          Components: EntityManager
>    Affects Versions: 3.4.0.GA
>         Environment: DB: Oracle 10g, OS: Win XP, Hibernate 3 using JPA entitymanager
>            Reporter: Rachit
>
> Hi,
> A very simple usage of SqlResultSetMapping. I want to retrieve only country Name using native query. I have specified one column country name to be fetched and mapped in Object.
> @SqlResultSetMapping(name = "CountryCountry", entities = { @EntityResult(entityClass = Country.class, fields = { @FieldResult(name = "countryName", column = "COUNTRY_NAME") })
>  public void testComplexer0NativeQuery() {
>         em = emf.createEntityManager();
>         Query query = em.createNativeQuery(
>                 "select iso.COUNTRY_NAME from Country iso",
>                 "CountryCountry");
>         List list = query.getResultList();
>         System.out.println(list.size());
>         System.out.println(list.get(0).getClass());
>     }
> Running this I get   "INFO: could not read column value from result set: ISO1_2_0_; Invalid column name" exception. The whole stack trace :
> javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query
> 	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
> 	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:76)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:618)
> 	at junit.framework.TestCase.runTest(TestCase.java:168)
> 	at junit.framework.TestCase.runBare(TestCase.java:134)
> 	at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)
> 	at junit.framework.TestResult$1.protect(TestResult.java:110)
> 	at junit.framework.TestResult.runProtected(TestResult.java:128)
> 	at junit.framework.TestResult.run(TestResult.java:113)
> 	at junit.framework.TestCase.run(TestCase.java:124)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:232)
> 	at junit.framework.TestSuite.run(TestSuite.java:227)
> 	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
> 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> 	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: org.hibernate.exception.GenericJDBCException: could not execute query
> 	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
> 	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
> 	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
> 	at org.hibernate.loader.Loader.doList(Loader.java:2231)
> 	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
> 	at org.hibernate.loader.Loader.list(Loader.java:2120)
> 	at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
> 	at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)
> 	at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
> 	at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
> 	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)
> 	... 21 more
> Caused by: java.sql.SQLException: Invalid column name
> 	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
> 	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
> 	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
> 	at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.java:6348)
> 	at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1557)
> 	at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:1549)
> 	at org.hibernate.type.StringType.get(StringType.java:41)
> 	at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
> 	at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
> 	at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121)
> 	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588)
> 	at org.hibernate.loader.Loader.doQuery(Loader.java:724)
> 	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
> 	at org.hibernate.loader.Loader.doList(Loader.java:2228)
> 	... 28 more
> Hibernate is trying to fetch all the columns present in entity to create the object. I am only interested in column/s I have specified in "@FieldResult".
> If I retrieve all fields in entity, It works fine though.
> Thanks and Regards.

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