You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Ritika Maheshwari <ri...@us.ibm.com> on 2006/08/23 20:29:14 UTC
how to define non contained relationships
here is the xsd which I am inputting to XSD2JavaGenerator
schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ibm.com/websphere/fvt/ejbquery/emf"
xmlns:ritika="http://www.ibm.com/websphere/fvt/ejbquery/emf"
xmlns:sdo="commonj.sdo/XML"
xmlns:sdoJava="commonj.sdo/java"
sdoJava:package="com.ibm.websphere.fvt.ejbquery.emf">
<complexType name="DataGraphRoot">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="deptMed"
type="ritika:DeptMed"/>
<element maxOccurs="unbounded" minOccurs="0" name="empMed"
type="ritika:EmpMed"/>
<element maxOccurs="unbounded" minOccurs="0" name="projectMed"
type="ritika:ProjectMed"/>
<element maxOccurs="unbounded" minOccurs="0" name="taskMed"
type="ritika:TaskMed"/>
<!-- <element name="changeSummary" type="sdo:ChangeSummaryType" />
-->
</sequence>
</complexType>
<complexType name="DeptMed">
<sequence>
<element name="deptno" type="int"/>
<element name="name" type="string"/>
<element name="budget" type="double"/>
<element sdo:oppositeProperty="manages"
sdo:propertyType="ritika:EmpMed" name="mgr" type="ritika:EmpMed" />
<element sdo:oppositeProperty="dept"
sdo:propertyType="ritika:ProjectMed" name="proj" type="ritika:ProjectMed"
/>
<element sdo:oppositeProperty="dept" sdo:propertyType="ritika:EmpMed"
name="emp" type="ritika:EmpMed" />
</sequence>
</complexType>
<complexType name="EmpMed">
<sequence>
<element name="empid" type="int"/>
<element name="name" type="string"/>
<element name="salary" type="double"/>
<element name="bonus" type="double"/>
<element sdo:oppositeProperty="emp" sdo:propertyType="ritika:DeptMed"
name="dept" type="ritika:DeptMed" />
<element sdo:oppositeProperty="emp" sdo:propertyType="ritika:TaskMed"
name="task" type="ritika:TaskMed" />
<element sdo:oppositeProperty="mgr" sdo:propertyType="ritika:DeptMed"
name="manages" type="ritika:DeptMed" />
</sequence>
</complexType>
<complexType name="ProjectMed">
<sequence>
<element name="projid" type="int"/>
<element name="cost" type="double"/>
<element name="startDate" type="dateTime"
sdoJava:instanceClass="java.sql.Timestamp"/>
<element name="endDate" type="dateTime"
sdoJava:instanceClass="java.sql.Timestamp"/>
<element sdo:oppositeProperty="proj" sdo:propertyType="ritika:DeptMed"
name="dept" type="ritika:DeptMed" />
<element sdo:oppositeProperty="proj" sdo:propertyType="ritika:TaskMed"
name="task" type="ritika:TaskMed" />
</sequence>
</complexType>
<complexType name="TaskMed">
<sequence>
<element name="taskid" type="int"/>
<element name="description" type="string"/>
<element name="startDate" type="dateTime"
sdoJava:instanceClass="java.sql.Timestamp" />
<element name="endDate" type="dateTime"
sdoJava:instanceClass="java.sql.Timestamp" />
<element sdo:oppositeProperty="task"
sdo:propertyType="ritika:ProjectMed" name="proj"
type="ritika:ProjectMed"/>
<element sdo:oppositeProperty="task" sdo:propertyType="ritika:EmpMed"
name="emp" type="ritika:EmpMed" />
</sequence>
</complexType>
</schema>
Now if I set the manages relationship on Employee to dept2 like this
emp1.setManages(dept2);
Then the manages relationship on emp1 is updated to dept2. But dept 2
eContainer becomes emp1 and its mgr relation still remains null.Although
it is the inverse relation of the manages.Ideally it should have been set
to Emp1.
The behaviour which I wanted to attain was to have EmpMed , DeptMed,
ProjectMed and TaskMed classes to be contained within DataGraphRoot.And
any relations between these four classes to be non contained.
I believe that to attain this behaviour the XSD needs to be modified.But I
do not find any examples could some one provide some input please
ritika