[hibernate-issues] [Hibernate-JIRA] Created: (HHH-5102) Instances of a subclass can't be loaded
Saša Obradović (JIRA)
noreply at atlassian.com
Mon Apr 12 09:46:58 EDT 2010
Instances of a subclass can't be loaded
---------------------------------------
Key: HHH-5102
URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5102
Project: Hibernate Core
Issue Type: Bug
Components: annotations, core, entity-manager
Affects Versions: 3.5.0-Final
Environment: Hibernate 3.5.0-Final, Oracle
Reporter: Saša Obradović
Priority: Blocker
Attachments: acount.jpg, columnnotfoundbug.zip, oracle.sql
For a simple class hierarchy (strategy: joined, using @MappedSuperclass) an instance can't be loaded from the database using the superclass as type:
{{Account account = entityManager.find(Account.class, 404L);}}
This works fine in any Hibernate version prior to the latest and is an obvious bug in 3.5.0-Final.
{quote}
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not load an entity: [hibernatebug.Account#404]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1179)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:575)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:529)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
at $Proxy90.find(Unknown Source)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy90.find(Unknown Source)
at at.ing.diba.service.architektur.BugTest.getSavingsAccount_aroundBody2(BugTest.java:40)
at at.ing.diba.service.architektur.BugTest$AjcClosure3.run(BugTest.java:1)
at at.ing.diba.manager.ServiceMethodTracingAspect.traceServiceMethod(ServiceMethodTracingAspect.java:40)
at at.ing.diba.service.architektur.BugTest.getSavingsAccount(BugTest.java:40)
at org.springframework.test.context.testng.AbstractTestNGSpringContextTests.run(AbstractTestNGSpringContextTests.java:158)
Caused by: org.hibernate.exception.GenericJDBCException: could not load an entity: [hibernatebug.Account#404]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1937)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3270)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:997)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:990)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:554)
... 47 more
Caused by: java.sql.SQLException: Ungültiger Spaltenname
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3296)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914)
at oracle.jdbc.driver.OracleResultSet.getBigDecimal(OracleResultSet.java:2042)
at org.hibernate.type.BigDecimalType.get(BigDecimalType.java:46)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2267)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1423)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1351)
at org.hibernate.loader.Loader.getRow(Loader.java:1251)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:619)
at org.hibernate.loader.Loader.doQuery(Loader.java:745)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1933)
... 59 more
{quote}
(''Ungültiger Spaltenname'' means: column not found)
The generated SQL-Statements are different:
3.5.0-Final:
{quote}
/* load hibernatebug.Account */ select
account0_.ACC_ID as ACC1_30_0_,
account0_.ACC_IBAN as ACC2_30_0_,
account0_.ACC_VERSION as ACC3_30_0_,
case
when account0_1_.SAVACC_ACC_ID is not null then 1
when account0_.ACC_ID is not null then 0
end as clazz_0_
from
ACCOUNT account0_
left outer join
SAVINGS_ACCOUNT account0_1_
on account0_.ACC_ID=account0_1_.SAVACC_ACC_ID
where
account0_.ACC_ID=?
{quote}
3.3.2.GA:
{quote}
/* load hibernatebug.Account */ select
account0_.ACC_ID as ACC1_36_0_,
account0_.ACC_IBAN as ACC2_36_0_,
account0_.ACC_VERSION as ACC3_36_0_,
account0_1_.SAVACC_WITHDRAWALLIMIT as SAVACC1_44_0_,
case
when account0_1_.SAVACC_ACC_ID is not null then 1
when account0_.ACC_ID is not null then 0
end as clazz_0_
from
ACCOUNT account0_
left outer join
SAVINGS_ACCOUNT account0_1_
on account0_.ACC_ID=account0_1_.SAVACC_ACC_ID
where
account0_.ACC_ID=?
{quote}
--
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