Hi, jimmi4664 wrote: > There's no requirements on the XML, other than I want to persist my objects > as an XML file, and be able to reconstruct them later. The resulting XML can > (pretty much) be whatever castor would like it to be. > > So, -for example- following XML would be fine: > > <person> > <name>asdfas</name> > <castor-generated-id>4652</castor-generated-id> > <cars> > <car> > <license-plate>34243</license-plate> > <owner-castor-generated-id>4652</owner-castor-generated-id > > </car> > <car> > <license-plate>111221</license-plate> > < owner-castor-generated-id >4652</owner-castor-generated-id > > </car> > </cars> > </person> > > The fact is that I don't have "id" field in my objects. They are pure POJOs > and just have object references to one another. Castor _could_ theoretically > cope with this requirement by just using object identity and generating > correct "id" fields internally. Yes and no. If you were to use XML schemas to define your contracts, you'd be using <xsd:ID/> and <xsd:IDREF/> types to denote that you are dealing with (cyclic) references. Have a look at e.g. the XML Schema Primer [1] first, and we'll continue our conversation after you have familiarized yourself with the concepts presented therein.
Okay ? Regards Werner [1] http://www.w3.org/TR/xmlschema-0/ > > I don't know if this is available, or do I need to create artificial ID > fields in my POJOs? > > Another alternative is to forget about Car.owner in the mapping and just fix > it manually after unmarshalling the objects. > > > Werner Guttmann-6 wrote: >> Hi, >> >> how does/should your XML actually look like ? >> >> Regards >> Werner >> >> jimmi4664 wrote: >>> That seems to assume I would have a unique identifier in my object. >>> There's >>> actually no good field in my example that could be used like that, and >>> what's worse my real world case does not have that either. >>> >>> So I believe if I want to make castor set the references correctly, I >>> need >>> to add some artificial ID field to my classes? >>> >>> >>> >>> Ralf Joachim-2 wrote: >>>> Hi Janne, >>>> >>>> when using mapping usage of references as explained in: >>>> >>>> http://www.castor.org/how-to-use-references-in-xml.html >>>> >>>> may help. If you generate code out of XSD you may need to take a look at >>>> xs:id and xs:idref to handle this. >>>> >>>> Having said that I never used that myself. >>>> >>>> Regards >>>> Ralf >>>> >>>> jimmi4664 schrieb: >>>>> I tried autocreating mapping file for a simple example using >>>>> MappingTool >>>>> to >>>>> maybe give a hint on how to do this: >>>>> >>>>> public class Owner { >>>>> private String name; >>>>> private ArrayList<Vehicle> vehicles = new ArrayList<Vehicle>(); >>>>> >>>>> public String getName() { >>>>> return name; >>>>> } >>>>> >>>>> public void setName(String name) { >>>>> this.name = name; >>>>> } >>>>> >>>>> public ArrayList<Vehicle> getVehicles() { >>>>> return vehicles; >>>>> } >>>>> >>>>> public void setVehicles(ArrayList<Vehicle> vehicles) { >>>>> this.vehicles = vehicles; >>>>> } >>>>> } >>>>> >>>>> public class Vehicle { >>>>> private String name; >>>>> private Owner owner; >>>>> >>>>> public String getName() { >>>>> return name; >>>>> } >>>>> >>>>> public void setName(String name) { >>>>> this.name = name; >>>>> } >>>>> >>>>> public Owner getOwner() { >>>>> return owner; >>>>> } >>>>> >>>>> public void setOwner(Owner owner) { >>>>> this.owner = owner; >>>>> } >>>>> } >>>>> >>>>> MappingTool tool = new MappingTool(); >>>>> tool.setInternalContext(new >>>>> BackwardCompatibilityContext()); >>>>> boolean deep = true; >>>>> File targetFile = new File("generated-mapping.xml"); >>>>> log.debug("generating mapping file..."); >>>>> tool.addClass(Owner.class, deep); >>>>> fw = new FileWriter(targetFile); >>>>> tool.write(fw); >>>>> log.debug("...done generating mapping file: " + >>>>> targetFile); >>>>> >>>>> But the end result is: >>>>> >>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>> <mapping xmlns="http://castor.exolab.org/" >>>>> xmlns:cst="http://castor.exolab.org/"> >>>>> <description xmlns="">Castor generated mapping file</description> >>>>> <class name="tests.Owner"> >>>>> <description xmlns="">Default mapping for class >>>>> tests.Owner</description> >>>>> <map-to/> >>>>> <field name="name" type="java.lang.String"> >>>>> <bind-xml name="name" node="element"/> >>>>> </field> >>>>> <field name="vehicles" type="java.lang.Object" >>>>> collection="arraylist"> >>>>> <bind-xml name="vehicles" node="element"/> >>>>> </field> >>>>> </class> >>>>> </mapping> >>>>> >>>>> So it seems it maps Vehicles in the list as Objects, which does not >>>>> help >>>>> >>>>> >>>>> >>>>> >>>>> >>>> -- >>>> >>>> Syscon Ingenieurbüro für Meß- und Datentechnik GmbH >>>> Ralf Joachim >>>> Raiffeisenstraße 11 >>>> 72127 Kusterdingen >>>> Germany >>>> >>>> Tel. +49 7071 3690 52 >>>> Mobil: +49 173 9630135 >>>> Fax +49 7071 3690 98 >>>> >>>> Internet: www.syscon.eu >>>> E-Mail: [email protected] >>>> >>>> Sitz der Gesellschaft: D-72127 Kusterdingen >>>> Registereintrag: Amtsgericht Stuttgart, HRB 382295 >>>> Geschäftsleitung: Jens Joachim, Ralf Joachim >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe from this list, please visit: >>>> >>>> http://xircles.codehaus.org/manage_email >>>> >>>> >>>> >>>> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

