I've got a working version now - thank you!

Unfortunately the solution leads to another question: Does the identifier field 
really has to be a String? Originally my "id" property is a BigDecimal. Using 
it as an identifier results in a compilation error:

[bind] Error: ID property must supply a java.lang.String value for value 
element at ...

So I added a String representation of "id" called "idStr" to DealHead. It's 
automatically set when "id" is set so the values are always equal. Using this 
property as identifier works, but I don't find it very sexy to have "idStr" in 
my model. 

Is there any other way? I couldn't find anything about this in the 
documentation.

Alexander

> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Auftrag von Dennis
> Sosnoski
> Gesendet: Samstag, 1. Oktober 2005 06:30
> An: [email protected]
> Betreff: Re: [jibx-users] OutOfMemoryError marshalling a
> parent/child-relationship
> 
> 
> Hi Niemann,
> 
> You need to do something about the circular references for 
> this to work 
> properly. The easiest approach is to make the id property of 
> DealHead an 
> identifier, with ident="def", then make the dealHead field of 
> DealDetail 
> a reference, with ident="ref". That should give you what you want.
> 
> Note that it's more common for XML to use nesting to indicate 
> ownership, 
> so that typically the XML representation of the DealDetails would not 
> actually have a link back to the parent DealHead. To make that work 
> properly you'd need a way of setting the references when 
> unmarshalling. 
> One easy way is to define an addDetail() method to the 
> DealHead class. 
> This method would set the DealDetail dealHead field to 
> "this", then add 
> the DealDetail to the HashSet.
> 
>   - Dennis
> 
> Niemann Alexander wrote:
> 
> > Hello everybody,
> >
> > I encountered an error marshalling the following class:
> >
> > public class DealHead {
> >     private Long id;
> >     private Set dealDetails = new HashSet();
> >     ....
> > }
> >
> > The collection dealDetails contains instances of 
> DealDetail, whereas a 
> > DealDetail contains a reference back to it's parent:
> >
> > public class DealDetail {
> >     private Long id;
> >     private DealHead dealHead;
> >     ...
> > }
> >
> > My binding file looks like this:
> >
> >   <mapping class="de.ava.kas.model.DealHead" name="deal-head">
> >     <value name="id" field="id" usage="optional"/>
> >     <collection field="dealDetails" usage="optional" 
> > item-type="de.ava.kas.model.DealDetail" type="java.util.HashSet"/>
> >      .....
> >   </mapping>
> >   <mapping class="de.ava.kas.model.DealDetail" name="deal-detail">
> >     <value name="id" field="id" usage="optional"/>
> >     <structure field="dealHead" usage="optional"></structure>
> >     .....
> >   </mapping>
> >
> > Now, when I try to create the XML from my DealHead objects I get an 
> > error: java.lang.OutOfMemoryError: Java heap space
> >
> > I guess that JiBX gets into an endless loop trying to solve the 
> > bi-directional relationship between DealHead and DealDetail (head 
> > contains detail containg head containing detail and so on). 
> As soon as 
> > I leave the collection DealHead.dealDetails empty or remove the 
> > mapping from my binding it just works just fine.
> >
> > Are there any suggestions how this problem can be avoided without 
> > changing the classes? Did I make any mistakes in my binding?
> >
> > Thanks in advance,
> > Alexander
> >
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by:
> Power Architecture Resource Center: Free content, downloads, 
> discussions,
> and more. http://solutions.newsforge.com/ibmarch.tmpl
> _______________________________________________
> jibx-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jibx-users
> 


-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
jibx-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to