You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Sam Su <su...@gmail.com> on 2007/02/05 10:32:18 UTC

How to handle many to many relationship using Tuscany Das

/**************************XSD***************************/

<xsd:complexType name="User">
    <xsd:sequence>
      <xsd:element name="userId" type="xsd:string"/>
      <xsd:element name="password" type="xsd:string"/>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="available" type="xsd:string"/>
      <xsd:element name="roles" type="this:Role"
maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

<xsd:complexType name="Role">
    <xsd:sequence>
      <xsd:element name="roleId" type="xsd:string"/>
      <xsd:element name="description" type="xsd:string"/>
      <xsd:element name="users" type="this:User"
maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

/************************TABLE SCRIPT**************************/
/*==============================================================*/
/* Table: CCP_USER
/*==============================================================*/
create table CCP_USER  (
   USER_ID              VARCHAR2(100)                   not null,
   PASSWORD             VARCHAR2(100)                   not null,
   NAME                 VARCHAR2(100)                   not null,
   AVAILABLE            CHAR(1)                         not null,
   constraint PK_CCP_USER primary key (USER_ID)
   );

/*==============================================================*/
/* Table: CCP_ROLE                                              */
/*==============================================================*/
create table CCP_ROLE  (
   ROLE_ID              VARCHAR2(100)                      not null,
   DESCRIPTION          VARCHAR2(1000),
   constraint PK_CCP_ROLE primary key (ROLE_ID)
);

/*==============================================================*/
/* Table: CCP_USER_ROLE                                         */
/*==============================================================*/
create table CCP_USER_ROLE  (
   USER_ID              VARCHAR2(100)                   not null,
   ROLE_ID              VARCHAR2(100)                   not null,
   constraint PK_CCP_USER_ROLE primary key (USER_ID, ROLE_ID)
);


There is a many to many relationship between CCP_USER and CCP_ROLE,  I want
to get a User dataojbect and its roles list is also retrieved from
database , how to do by using Tuscany DAS?

/*********** i want to use following code to get role list of each user
**************/
List users=root.getList("User");
        System.out.println(users.size());
  for(int i=0;i<users.size();i++){
            User obj=(User)users.get(i);
   System.out.println(obj.getUserId());

            List roles=obj.getRoles();
            System.out.println(roles.size());
            for(int j=0;j<roles.size();j++)
                System.out.println(((Role)roles.get(j)).getRoleId());

  }

Any idea or experience?  thanks.

Re: How to handle many to many relationship using Tuscany Das

Posted by Kevin Williams <ke...@qwest.net>.
The DAS does not directly support M:N relationships so although you can 
achieve this using two 1:m relationships.  You just need to model the 
join table.
Thanks,
--Kevin


Sam Su wrote:

> /**************************XSD***************************/
>
> <xsd:complexType name="User">
>    <xsd:sequence>
>      <xsd:element name="userId" type="xsd:string"/>
>      <xsd:element name="password" type="xsd:string"/>
>      <xsd:element name="name" type="xsd:string"/>
>      <xsd:element name="available" type="xsd:string"/>
>      <xsd:element name="roles" type="this:Role"
> maxOccurs="unbounded"/>
>    </xsd:sequence>
>  </xsd:complexType>
>
> <xsd:complexType name="Role">
>    <xsd:sequence>
>      <xsd:element name="roleId" type="xsd:string"/>
>      <xsd:element name="description" type="xsd:string"/>
>      <xsd:element name="users" type="this:User"
> maxOccurs="unbounded"/>
>    </xsd:sequence>
>  </xsd:complexType>
>
> /************************TABLE SCRIPT**************************/
> /*==============================================================*/
> /* Table: CCP_USER
> /*==============================================================*/
> create table CCP_USER  (
>   USER_ID              VARCHAR2(100)                   not null,
>   PASSWORD             VARCHAR2(100)                   not null,
>   NAME                 VARCHAR2(100)                   not null,
>   AVAILABLE            CHAR(1)                         not null,
>   constraint PK_CCP_USER primary key (USER_ID)
>   );
>
> /*==============================================================*/
> /* Table: CCP_ROLE                                              */
> /*==============================================================*/
> create table CCP_ROLE  (
>   ROLE_ID              VARCHAR2(100)                      not null,
>   DESCRIPTION          VARCHAR2(1000),
>   constraint PK_CCP_ROLE primary key (ROLE_ID)
> );
>
> /*==============================================================*/
> /* Table: CCP_USER_ROLE                                         */
> /*==============================================================*/
> create table CCP_USER_ROLE  (
>   USER_ID              VARCHAR2(100)                   not null,
>   ROLE_ID              VARCHAR2(100)                   not null,
>   constraint PK_CCP_USER_ROLE primary key (USER_ID, ROLE_ID)
> );
>
>
> There is a many to many relationship between CCP_USER and CCP_ROLE,  I 
> want
> to get a User dataojbect and its roles list is also retrieved from
> database , how to do by using Tuscany DAS?
>
> /*********** i want to use following code to get role list of each user
> **************/
> List users=root.getList("User");
>        System.out.println(users.size());
>  for(int i=0;i<users.size();i++){
>            User obj=(User)users.get(i);
>   System.out.println(obj.getUserId());
>
>            List roles=obj.getRoles();
>            System.out.println(roles.size());
>            for(int j=0;j<roles.size();j++)
>                System.out.println(((Role)roles.get(j)).getRoleId());
>
>  }
>
> Any idea or experience?  thanks.
>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org