Thanks for the Code. Yes it worked but only after some tweaking in the SQL query for "testFullOuterJoinRelationship" in the file https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test /resources/companyMappingWithResultDescriptor.xml Here is what worked for me - <Command name="testFullOuterJoinRelationship2" SQL="select * from EMPLOYEE left join DEPARTMENT on EMPLOYEE.DEPARTMENTID = DEPARTMENT.ID union select * from EMPLOYEE right join DEPARTMENT on EMPLOYEE.DEPARTMENTID = department.ID where EMPLOYEE.DEPARTMENTID is null" kind="Select"> <ResultDescriptor columnName="ID" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/> <ResultDescriptor columnName="NAME" tableName="EMPLOYEE" columnType="commonj.sdo.String"/> <ResultDescriptor columnName="SN" tableName="EMPLOYEE" columnType="commonj.sdo.String"/> <ResultDescriptor columnName="MANAGER" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/> <ResultDescriptor columnName="DEPARTMENTID" tableName="EMPLOYEE" columnType="commonj.sdo.IntObject"/> <ResultDescriptor columnName="ID" tableName="DEPARTMENT" columnType="commonj.sdo.IntObject"/> <ResultDescriptor columnName="NAME" tableName="DEPARTMENT" columnType="commonj.sdo.String"/> <ResultDescriptor columnName="LOCATION" tableName="DEPARTMENT" columnType="commonj.sdo.String"/> <ResultDescriptor columnName="DEPNUMBER" tableName="DEPARTMENT" columnType="commonj.sdo.String"/> <ResultDescriptor columnName="COMPANYID" tableName="DEPARTMENT" columnType="commonj.sdo.IntObject"/> </Command>
Also where can I find more information about ResultDescriptor ? Thanks again for your help. -Umesh Tyagi -----Original Message----- From: Luciano Resende [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 24, 2007 8:10 PM To: [email protected] Subject: Re: RDB DAS - How to create non containment association ? Hi Umesh I have updated the RelationshipTests [1] to cover your scenario. A Query that retrieves Departments with no employees, and Employees with no departments and update their relationship. I hope this helps with your previous concern about supporting this scenario... Please let me know if you have any questions, [1] https://svn.apache.org/repos/asf/incubator/tuscany/java/das/rdb/src/test /java/org/apache/tuscany/das/rdb/test/RelationshipTests.java On 4/24/07, Luciano Resende <[EMAIL PROTECTED]> wrote: > > Have you tried simulating a full outer join with a union of left and > right joins, like below : > > select * from DEPARTMENT left join EMPLOYEE on DEPARTMENT.ID = > EMPLOYEE.DEPARTMENTID UNION select * from DEPARTMENT right join > EMPLOYEE on DEPARTMENT.ID = EMPLOYEE.DEPARTMENTID WHERE > employee.DepartmentID IS NULL > > If I understood it correct, this would give you all the necessary data > inside the dataGraph. I quickly tried the query inside the eclipse > Database Explorer connecting with Derby, and the results looked ok, > and had the department with no employees, as well as the employees with no departments. > > I'll try to play with this scenario to extend the Relationship > testcases we have, and if I succeed, I'll send a note with my findings later on... > > On 4/23/07, Kevin Williams <[EMAIL PROTECTED]> wrote: > > > > I think I did not explain well. > > > > The RDB DAS does not support containment (in the SDO sense) > > relationships between business dataobjects in a graph. Since all > > elements must be contained by something, all elements are contained > > by the (dummy) root of the graph. So, if you read a department > > along with its related employees then the relationship between > > department and employees is not containment. > > Unless I misunderstand, this is what you want. > > > > Here is one way to assign an existing employee to an existing > > department: > > > > // Move an employee to dep1 from dep2 > > DataObject emp = (DataObject) dep2.getList("emps").get(0); > > dep1.getList("emps").add(emp); > > > > // Flush changes > > das.applyChanges(root); > > > > If the scenario you have in mind is more complicated than this - > > like if you want to add employees that are not part of the existing > > graph > > - then > > you are looking at merging graphs. There is some early support for > > this but not much. > > > > --Kevin > > > > > > On 4/23/07, Umesh Tyagi (utyagi) <[EMAIL PROTECTED]> wrote: > > > > > > But doesn't it pose a big limitation for DAS RDB ? I mean > > > associations > > > > > are not necessarily containment relations. I want to able to > > > assign an existing employee to and existing department or a more > > > intuitive > > example > > > would be relationship between "customer service agent" and "customer". > > > > > How am I ever going to achieve that with DAS RDB? > > > > > > Thanks > > > -Umesh Tyagi > > > > > > -----Original Message----- > > > From: Kevin Williams [mailto: [EMAIL PROTECTED] > > > Sent: Monday, April 23, 2007 3:07 PM > > > To: [email protected] > > > Subject: Re: RDB DAS - How to create non containment association ? > > > > > > On 4/23/07, Umesh Tyagi (utyagi) <[EMAIL PROTECTED]> wrote: > > > > > > > > So whenever I want to associate employees to a department I > > > > either create a new employee or move employee from some other department ? > > > > > > > > > That's right. > > > > > > I am talking about the case when a "employee" object is currently > > > > without any associated department. When we want to assign it to > > > > a department the following query will not include the employee I > > > > am interested in - "select * from DEPARTMENT left outer join > > > > EMPLOYEE > > on > > > > DEPARTMENT.ID = EMPLOYEE.DEPARTMENTID " > > > > A right join on the other hand will leave out all the 'departmemt' > > > > objects without any employee. > > > > > > > Thanks > > > > -Umesh Tyagi > > > > > > > > > > > > -----Original Message----- > > > > From: Kevin Williams [mailto: [EMAIL PROTECTED] > > > > Sent: Monday, April 23, 2007 12:43 PM > > > > To: [email protected] > > > > Subject: Re: RDB DAS - How to create non containment association ? > > > > > > > > If you want departments and their related employees then you > > > > would typically use a left join rather than a full join. At > > > > least, this > > is > > > > the scenario I see used most often. Our test case: > > > > > > > > RelationshipTests.testRelationshipModification2() > > > > > > > > demonstrates this. > > > > > > > > Thanks, > > > > > > > > --Kevin > > > > > > > > > > > > > > > > To read a set of departments and related employees you would > > typically > > > > > > > use a left outer join rather than a full join since you want > > > > > > > > On 4/21/07, Umesh Tyagi (utyagi) < [EMAIL PROTECTED]> wrote: > > > > > > > > > > How to create non containment association between two existing > > > > > objects > > > > ? > > > > > For example, lets assume the following relationship is a non > > > > > containment association i.e. both objects can exist > > > > > independently > > of > > > > > > > > each other - > > > > > > > > > > ------------ ---------- > > > > > |DEPARTMENT| 1______________* |EMPLOYEE| > > > > > ------------ ---------- > > > > > > > > > > Playing with samples code I have noticed that in order to > > > > > create association between two object they need to be part of > > > > > the same > > data > > > > > > > > graph generated by a single query. So for the following line > > > > > to > > work > > > > > > > > - > > > > > > > > > > department.getList("employees").add(employee) > > > > > > > > > > both 'department' and 'employee' dataobjects must be under > > > > > same > > root > > > > > > > > DataObject instance. To achieve this I tried to do a full > > > > > outer > > join > > > > > > > > between DEPARTMENT and EMPLOYEE but it is not supported by > > > > > derby > > or > > > > > hsql. The equivalent union result is not typed to DEPARTMENT > > > > > and EMPLOYEE by DAS. The other option is to set the foreign > > > > > key value explicitly in the 'employee' object, but it is not > > > > > desirable. Any other ideas ? > > > > > > > > > > -Umesh Tyagi > > > > > > > > > > > > -------------------------------------------------------------------- > > > > > - To unsubscribe, e-mail: > > > > > [EMAIL PROTECTED] > > > > > For additional commands, e-mail: > > > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > -------------------------------------------------------------------- > > - > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > ------------------------------------------------------------------ > > > --- To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > -- > Luciano Resende > http://people.apache.org/~lresende > <http://people.apache.org/%7Elresende> -- Luciano Resende http://people.apache.org/~lresende --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
