[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-1039) WrongClassException when scrolling through EntityMode.DOM4J and loading identical objects from different fields

jason (JIRA) noreply at atlassian.com
Fri May 4 09:11:04 EDT 2007


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

jason updated HHH-1039:
-----------------------

    Attachment: Loader.java

Here is a fix, basically in the org\hibernate\loader\Loader.java class in the getRow(....) method we catch the WrongClassException thrown by the instanceAlreadyLoaded(....) method and call instanceNotYetLoaded(...) to fetch the desired data 'fresh'.  FYI this was done on version 3.1

> WrongClassException when scrolling through EntityMode.DOM4J and loading identical objects from different fields
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: HHH-1039
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1039
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.0.5
>         Environment: Windows XP, JDK 1.4.2_8, Hibernate 3.0.5, Oracle 9.2. Replicated on Windows XP, JDK 1.5.0_2, Hibernate 3.0.5, MySQL
>            Reporter: Roland Groen
>             Fix For: entity-modes
>
>         Attachments: HbmXmlTest.java, Loader.java, Test.hbm.xml
>
>
> When working with XML representations of entities, an unexpected org.hibernate.WrongClassException is thrown when working with identical embedded objects (embed-xml="true") which have different field names.
> org.hibernate.WrongClassException seems to be thrown when:
> 1) Running in EntityMode.DOM4J
> 2) Scrolling through a result set using session.scroll()
> 3) Embedding objects that are:
>  a) Referred by least by one of the objects on which the query is selecting primarily (parent object) and,
>  b) that field is in FetchMode.JOIN.
>  c) Referred by one object which is embedded (embed-xml="true") and uses a different field name to refer to the object than the parent object.
> I would like to apologise for the large test case. The bug is quite hard to reproduce, I tried to minimise the test, but this seems the smallest and most simple case I can find.
> The stack trace is:
> Caused by: org.hibernate.WrongClassException: Object with id: 1 was not of the specified subclass: Customer (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.loadSingleRow(Loader.java:238)
>     at org.hibernate.impl.ScrollableResultsImpl.prepareCurrentRow(ScrollableResultsImpl.java:477)
>     at org.hibernate.impl.ScrollableResultsImpl.next(ScrollableResultsImpl.java:106)
>     at HbxXmlTest.main(HbxXmlTest.java:90)
> The included files are:
> Test.hbm.xml : the hbm file to create the classes
> HbmXmlTest.java : the the java source to reproduce the issue.
> Greetings,
> Roland.

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