[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