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.
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
>
>
>
>
--
View this message in context:
http://old.nabble.com/How-to-map-cyclic---recursive-objects--tp26317185p26333084.html
Sent from the Castor - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email