[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-535) properties element causes exception in interface/abstract class

Steve Ebersole (JIRA) noreply at atlassian.com
Mon Mar 21 13:01:11 EDT 2011


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Ebersole closed HHH-535.
------------------------------


Closing stale resolved issues

> properties element causes exception in interface/abstract class
> ---------------------------------------------------------------
>
>                 Key: HHH-535
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-535
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.0.3
>         Environment: Hibernate version: 3.0.3 
>            Reporter: Jason Boutwell
>            Assignee: Steve Ebersole
>             Fix For: 3.2.0.alpha2, 3.1.3
>
>
> I am using the <properties> element to map some legacy data. It appears that Hibernate is trying to create a component POJO for the <properties> element with the type of the enclosing class, which is an interface. Is this expected behavior? 
> <hibernate-mapping> 
> <class name="Address" table="ADDRESS" proxy="Address"> 
> <meta attribute="interface" inherit="false">true</meta> 
> <id name="addressId" type="long" column="ADDRESS_ID"/> 
> <discriminator column="ADDRESS_TYPE" type="string" length="30" /> 
> <properties name="uniqueAddress"> 
> <property name="addressType" column="ADDRESS_TYPE" type="string" insert="false" update="false" length="30" /> 
> <many-to-one name="server" column="SERVER_ID" class="Server" not-null="true" /> 
> </properties> 
> <subclass name="AddressImpl" discriminator-value="null" proxy="Address"> 
> </subclass> 
> </class> 
> <class name="Server" table="SERVER" 
> proxy="Server"> 
> <meta attribute="interface" 
> inherit="false">true</meta> 
> <id name="serverId" type="long" 
> column="SERVER_ID"> 
> <discriminator column="SERVER_TYPE" 
> type="string" length="10"/> 
> <property name="serverType" type="string" 
> column="SERVER_TYPE" length="10" 
> update="false" insert="false"/> 
> <subclass name="ServerImpl" 
> discriminator-value="null" 
> proxy="Server"> 
> <many-to-one name="address" 
> class="AddressImpl" 
> property-ref="uniqueAddress" 
> cascade="all-delete-orphan" 
> unique="true" 
> update="false" insert="false"> 
> <column name="ADDRESS_TYPE"/> 
> <column name="SERVER_ID"/> 
> </many-to-one> 
> </subclass> 
> </class> 
> </hibernate-mapping> 
> When I create a new Server and add a ServerAddress, Hibernate throws an Exception during the cascade, It seems to be trying to instantiate the <properties> "component": 
> org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: Address 
> org.springframework.orm.hibernate3.HibernateSystemException: Cannot instantiate abstract class or interface: Address; nested exception is org.hibernate.InstantiationException: Cannot instantiate abstract class or interface: Addressorg.hibernate.InstantiationException: Cannot instantiate abstract class or interface: Address at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:56) at org.hibernate.tuple.AbstractComponentTuplizer.instantiate(AbstractComponentTuplizer.java:89) at org.hibernate.type.ComponentType.instantiate(ComponentType.java:344) at org.hibernate.type.ComponentType.deepCopy(ComponentType.java:301) at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:290) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:226) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:159) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:96) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:464) at org.hibernate.engine.Cascades$5.cascade(Cascades.java:154) at org.hibernate.engine.Cascades.cascadeAssociation(Cascades.java:771) at org.hibernate.engine.Cascades.cascade(Cascades.java:720) at org.hibernate.engine.Cascades.cascade(Cascades.java:847) at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:331) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:213) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:159) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:184) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:173) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:69) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:477) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:472)
> According to Hibernate DEBUG logs, everything looks to be working until it tries to cascade save the AddressImpl, and it rolls back. 
> 2005-05-24 18:27:31,183 DEBUG engine.PersistenceContext - initializing non-lazy collections 
> 2005-05-24 18:27:31,190 DEBUG def.DefaultSaveOrUpdateEventListener - saving transient instance 
> 2005-05-24 18:27:31,193 DEBUG jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0) 
> 2005-05-24 18:27:31,194 DEBUG jdbc.AbstractBatcher - select SERVER_INFO_SEQ.nextval from dual 
> 2005-05-24 18:27:31,195 DEBUG jdbc.AbstractBatcher - preparing statement 
> 2005-05-24 18:27:31,237 DEBUG id.SequenceGenerator - Sequence identifier generated: 203783 
> 2005-05-24 18:27:31,237 DEBUG jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1) 
> 2005-05-24 18:27:31,240 DEBUG jdbc.AbstractBatcher - closing statement 
> 2005-05-24 18:27:31,241 DEBUG def.AbstractSaveEventListener - generated identifier: 203783, using strategy: org.hibernate.id.SequenceGenerator 
> 2005-05-24 18:27:31,244 DEBUG def.AbstractSaveEventListener - saving [ServerImpl#203783] 
> 2005-05-24 18:27:31,248 DEBUG engine.Cascades - processing cascade ACTION_SAVE_UPDATE for: ServerImpl 
> 2005-05-24 18:27:31,249 DEBUG engine.Cascades$5 - cascading to saveOrUpdate: AddressImpl 
> 2005-05-24 18:27:31,254 DEBUG def.AbstractSaveEventListener - transient instance of: AddressImpl 
> 2005-05-24 18:27:31,255 DEBUG def.DefaultSaveOrUpdateEventListener - saving transient instance 
> 2005-05-24 18:27:31,255 DEBUG jdbc.AbstractBatcher - about to open PreparedStatement (open PreparedStatements: 0, globally: 0) 
> 2005-05-24 18:27:31,256 DEBUG jdbc.AbstractBatcher - select SERVER_ADDRESS_SEQ.nextval from dual 
> 2005-05-24 18:27:31,257 DEBUG jdbc.AbstractBatcher - preparing statement 
> 2005-05-24 18:27:31,264 DEBUG id.SequenceGenerator - Sequence identifier generated: 2007899 
> 2005-05-24 18:27:31,266 DEBUG jdbc.AbstractBatcher - about to close PreparedStatement (open PreparedStatements: 1, globally: 1) 
> 2005-05-24 18:27:31,267 DEBUG jdbc.AbstractBatcher - closing statement 
> 2005-05-24 18:27:31,268 DEBUG def.AbstractSaveEventListener - generated identifier: 2007899, using strategy: org.hibernate.id.SequenceGenerator 
> 2005-05-24 18:27:31,269 DEBUG def.AbstractSaveEventListener - saving [AddressImpl#2007899] 
> 2005-05-24 18:27:31,282 DEBUG transaction.JDBCTransaction - rollback 
> 2005-05-24 18:27:31,282 DEBUG jdbc.JDBCContext - before transaction completion 
> 2005-05-24 18:27:31,283 DEBUG impl.SessionImpl - before transaction completion 
> 2005-05-24 18:27:31,284 DEBUG transaction.JDBCTransaction - re-enabling autocommit 
> 2005-05-24 18:27:31,285 DEBUG transaction.JDBCTransaction - rolled back JDBC Connection 
> 2005-05-24 18:27:31,286 DEBUG jdbc.JDBCContext - after transaction completion 
> 2005-05-24 18:27:31,286 DEBUG impl.SessionImpl - after transaction completion 
> 2005-05-24 18:27:31,292 DEBUG impl.SessionImpl - closing session 
> 2005-05-24 18:27:31,292 DEBUG jdbc.AbstractBatcher - closing JDBC connection (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0) 
> 2005-05-24 18:27:31,297 DEBUG jdbc.JDBCContext - after transaction completion 
> 2005-05-24 18:27:31,297 DEBUG impl.SessionImpl - after transaction completion 

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