These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: WrongClassException on joined-subclass @seeJIRA HHH-606
PostPosted: Sat Mar 11, 2006 8:46 pm 
Newbie

Joined: Sat Mar 11, 2006 7:12 pm
Posts: 3
Location: Oklahoma City
My question is very similar to the JIRA issue #HHH-606
http://opensource2.atlassian.com/projec ... se/HHH-606

And the stauts for the bug is closed, so I am not sure whether this has been fixed in the hibernate new release.

Thanks a lot.

Here are the details

Hibernate version:
Hibernate 3.0.5

Mapping documents:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class
name="model.environment.impacts.measurement.EnvironmentalMeasurement"
table="ENV_MEASUREMENT"
>
<id
name="id"
column="ID"
type="java.lang.Integer"
unsaved-value="0"
>
<generator class="native">

</generator>
</id>
<discriminator
column="TYPE"
/>
<property
name="value"
type="java.lang.Float"
column="VALUE"
/>
<property
name="date"
type="java.util.Date"
column="CONSUMPTION_DATE"
/>
<set
name="children"
lazy="false"
inverse="true"
cascade="save-update"
sort="unsorted"
>
<key
column="PARENT_ID"
>
</key>

<one-to-many
class="model.environment.impacts.measurement.EnvironmentalMeasurement"
/>

</set>
<many-to-one
name="parent"
class="model.environment.impacts.measurement.EnvironmentalMeasurement"
cascade="save-update"
outer-join="auto"
column="PARENT_ID"
/>
<subclass
name="model.environment.impacts.measurement.BatteryReplacement"
>

</subclass>
<subclass
name="model.environment.impacts.measurement.ElectricHeatingConsumption"
>
</subclass>
<subclass
name="model.environment.impacts.measurement.LightSourceReplacement"
>
<property
name="replacementType"
type="java.lang.String"
column="REPLACEMENT_TYPE"
length="4000"
/>

</subclass>
<subclass
name="model.environment.impacts.measurement.DieselEngineExhaustGases"
>

</subclass>
<subclass
name="model.environment.impacts.measurement.BathroomWaterConsumption"
>
</subclass>
<subclass
name="model.environment.impacts.measurement.CableReplacement"
>
<property
name="a1CU"
type="int"
column="A1CU"
/>

<property
name="length"
type="java.lang.Float"
column="CABLE_LENGTH"
/>

</subclass>
<subclass
name="environment.impacts.measurement.RecipientCleaningConsumption"
>

</subclass>
<subclass
name="model.environment.impacts.measurement.PowerConsumption"
>


</subclass>
<subclass
name="model.environment.impacts.measurement.PlantCleaningConsumption"
>

</subclass>
<subclass
name="model.environment.impacts.measurement.FittingReplacement"
>
<property
name="replacementType"
type="java.lang.String"
column="REPLACEMENT_TYPE"
length="256"
/>
</subclass>
<subclass
name="model.environment.impacts.measurement.LightingConsumption"
>

</subclass>
<subclass
name="model.environment.impacts.measurement.HydrogenConcentration"
>
</subclass>
<subclass
name="model.environment.impacts.measurement.ComponentReplacement"
>
<property
name="replacementType"
type="java.lang.String"
column="REPLACEMENT_TYPE"
length="256"
/>

</subclass>
<subclass
name="model.environment.impacts.measurement.TransformerLossConsumption"
>
</subclass>

<subclass
name="model.environment.impacts.measurement.PumpRoomGases"
>
</subclass>
<subclass
name="model.environment.impacts.measurement.PumpEngineConsumption"
>


</class>

</hibernate-mapping>



Code between sessionFactory.openSession() and session.close():

public EnvironmentalImpact findById(Integer id)
{

EnvironmentalImpact result = null;
try
{
String query = "from EnvironmentalImpact where id = :getId";
result = (EnvironmentalImpact)HibernateSession.getSession()
.createQuery(query)
.setInteger("getId", id.intValue())
.uniqueResult();
}
catch (Exception e)
{
e.printStackTrace();
}

return result;
}

Full stack trace of any exception that occurs:

org.hibernate.WrongClassException: Object with id: 4 was not of the specified subclass: model.environment.impacts.measurement.TransformerLossConsumption (loaded object was of wrong class)

at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.java:890)

at org.hibernate.loader.Loader.getRow(Loader.java:846)

at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:305)

at org.hibernate.loader.Loader.doQuery(Loader.java:412)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)

at org.hibernate.loader.Loader.loadCollection(Loader.java:1434)

at org.hibernate.loader.collection.OneToManyLoader.initialize(OneToManyLoader.java:111)

at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:488)

at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)

at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1430)

at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:280)

at org.hibernate.engine.PersistenceContext.initializeNonLazyCollections(PersistenceContext.java:796)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)

at org.hibernate.loader.Loader.loadEntity(Loader.java:1345)

at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)

at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)

at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)

at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)

at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)

at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)

at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)

at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)

at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)

at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)

at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)



Name and version of the database you are using:
MySql

The generated SQL (show_sql=true):
CREATE TABLE `env_measurement` (
`ID` int(11) NOT NULL auto_increment,
`TYPE` varchar(255) NOT NULL default '',
`VALUE` float default NULL,
`CONSUMPTION_DATE` datetime default NULL,
`PARENT_ID` int(11) default NULL,
`REPLACEMENT_TYPE` text,
`A1CU` int(11) default NULL,
`CABLE_LENGTH` float default NULL,
`EX_EFFECTS_ID` int(11) default NULL,
`INT_EFFECTS_ID` int(11) default NULL,
`RES_EFFECTS_ID` int(11) default NULL,
PRIMARY KEY (`ID`),
KEY `FK18EE0F2A724B8938` (`INT_EFFECTS_ID`),
KEY `FK18EE0F2A70575576` (`RES_EFFECTS_ID`),
KEY `FK18EE0F2AFB902115` (`PARENT_ID`),
KEY `FK18EE0F2AF5BB6926` (`EX_EFFECTS_ID`),
CONSTRAINT `FK18EE0F2AF5BB6926` FOREIGN KEY (`EX_EFFECTS_ID`) REFERENCES `env_external_effects` (`ID`),
CONSTRAINT `FK18EE0F2A70575576` FOREIGN KEY (`RES_EFFECTS_ID`) REFERENCES `env_resource_effect` (`ID`),
CONSTRAINT `FK18EE0F2A724B8938` FOREIGN KEY (`INT_EFFECTS_ID`) REFERENCES `env_internal_effects` (`ID`),
CONSTRAINT `FK18EE0F2AFB902115` FOREIGN KEY (`PARENT_ID`) REFERENCES `env_measurement` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1


Debug level Hibernate log excerpt:


17:29:05,680 ERROR DispatchAction:95 - showList error,
org.hibernate.WrongClassException: Object with id: 4 was not of the specified subclass: model.environment.impacts.measurement.TransformerLossConsumption (loaded object was of wrong class)
at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.java:890)
at org.hibernate.loader.Loader.getRow(Loader.java:846)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:305)
at org.hibernate.loader.Loader.doQuery(Loader.java:412)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1434)
at org.hibernate.loader.collection.OneToManyLoader.initialize(OneToManyLoader.java:111)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:488)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1430)
at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:280)
at org.hibernate.engine.PersistenceContext.initializeNonLazyCollections(PersistenceContext.java:796)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1345)
at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)
at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)


Top
 Profile  
 
 Post subject: Re: WrongClassException on joined-subclass @seeJIRA HHH-606
PostPosted: Sun Mar 12, 2006 4:15 pm 
Regular
Regular

Joined: Wed Feb 22, 2006 11:28 am
Posts: 65
Location: Santiago, Chile
Hello Oliver:

I wrote the solution in the Forum for chinese users. You can try to see it.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.