Hi Akihito,
if you do not have control over XSD there is only one option you can
try. You can treat the relation between Product and Detail as n:m. For a
n:m relation you will create a seperate relation table that stores which
Detail belongs to which Product. It should be possible to define such a
relation only on the Product side. Informations about how to map n:m
relations are included in Castor docs.
Regards
Ralf
Akihito Nakamura schrieb:
> Hi,
>
> I have Java classes generated using Castor Code Generator,
> and they works fine for XML-Java marshalling/unmarshalling.
> I want to utilize the classes for Java-SQL mapping, too.
>
> My question is how to create a reference from the dependent
> class to the master one, in 1:m relationship.
> The dependent appears in the content model of the master's
> complex type definition in the XML schema.
>
> In the Castor JDO, dependent objects must have reference to
> its master object. Finally, the reference is stored as a
> foreign key in the dependent side table.
>
> How can I treat such 1:m objects as master and dependents in JDO ?
> Some subclasses of generated classes should be written by hand ?
>
>
>
> For example, suppose a product has many details.
> The XML schema looks like:
> ===========================================================
> <xsd:complexType name="productDetailType">
> <xsd:attribute name="id" type="xsd:string" use="required" />
> <xsd:attribute name="name" type="xsd:string" use="required" />
> </xsd:complexType>
>
> <xsd:element name="product" type="productType" />
>
> <xsd:complexType name="productType">
> <xsd:sequence>
> <!-- Product has many Details. -->
> <xsd:element name="detail" type="productDetailType"
> minOccurs="0" maxOccurs="unbounded" />
> </xsd:sequence>
> <xsd:attribute name="id" type="xsd:string" use="required" />
> <xsd:attribute name="name" type="xsd:string" use="required" />
> .....
> </xsd:complexType>
> ===========================================================
>
>
> A snippet of the generated classes:
> ===========================================================
> public class ProductDetailType implements java.io.Serializable {
> private java.lang.String _id;
> private java.lang.String _name;
> .....
> }
>
> public class Detail extends ProductDetailType
> implements java.io.Serializable
> {
> .....
> }
>
> public class ProductType implements java.io.Serializable {
> private java.lang.String _id;
> private java.lang.String _name;
> private java.util.Vector _detailList;
> .....
> public void addDetail(final Detail vDetail)
> throws java.lang.IndexOutOfBoundsException {
> this._detailList.addElement(vDetail);
> }
> .....
> }
> ===========================================================
>
>
> As you can find in the Castor example, the following code
> is required for master-dependents relation.
> ===========================================================
> public class ProductDetailType implements java.io.Serializable {
> private java.lang.String _id;
> private java.lang.String _name;
> private Product _product;
>
> public void setProduct( final Product product )
> {
> _product = product;
> }
> .....
> }
>
> public class ProductType implements java.io.Serializable {
> private java.util.Vector _detailList;
>
> public void addDetail(final Detail vDetail) {
> .....
> this._detailList.addElement(vDetail);
> vDetail.setProduct(this);
> }
> .....
> }
> ===========================================================
>
>
> ----
> Akihito NAKAMURA @ AIST
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
>
--
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