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

Jon Seymour (JIRA) noreply at atlassian.com
Tue Apr 3 07:22:04 EDT 2007


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

Jon Seymour commented on HHH-1039:
----------------------------------

Hi. 

I also experienced this issue.

I had a data model that looked like this:

        Customer 1 -> n CustomerRole n -> 1 Person

the problem was that on the association between CustomerRole and Person, I named the node rolePerson
whereas on the Person entity itself, I declared the XML node to be person.

Everything worked when I fetched a customer and all objects reachable from the customer.

A problem arose when I declared the associations to be fetch="join" and then did a Criteria-style query on customers which was qualified by person.

This would result in SQL that did joins across the customer, customer role and person entities and would result in the initial person entity being unpacked as a "person" element. Then, when the associations were followed the person would be queried again but this time it would be unpacked as a "rolePerson". This caused a clash that was eventually reported as a WrongClassException.

Per Roland's suggestion, the solution was to given the association that referenced person and the person entity itself the same XML node name (person).





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