Sam,

 You need to define a relationship in your configuration:

<Relationship name="roles" primaryKeyTable="CCP_SERVICE"
foreignKeyTable="CCP_ROLE" many="true">
    <KeyPair primaryKeyColumn="SERVICE_ID" foreignKeyColumn="SERVICE_ID"/>
 </Relationship>  

Brent

On 1/26/07, Sam Su <[EMAIL PROTECTED]> wrote:
/******************schema xsd*****************************/

<xsd:complexType name="Service">
    <xsd:sequence>
      <xsd:element name="serviceId" type="xsd:decimal"/>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="available" type="xsd:string"/>
      <xsd:element maxOccurs="unbounded" name="roles"
type="this:Role"/>
    </xsd:sequence>
  </xsd:complexType>
    <xsd:complexType name="Role">
    <xsd:sequence>
      <xsd:element name="roleId" type="xsd:decimal"/>
      <xsd:element name="serviceId" type="xsd:decimal"/>
      <xsd:element name="name" type="xsd:string"/>
      <xsd:element name="available" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

/**************configuration file ********************/

  <Command name="qryAllServices" SQL="select CCP_SERVICE.SERVICE_ID,
CCP_SERVICE.NAME,CCP_SERVICE.AVAILABLE,CCP_ROLE.ROLE_ID,CCP_ROLE.NAME,CCP_ROLE.AVAILABLE
from CCP_SERVICE INNER JOIN CCP_ROLE on
CCP_SERVICE.SERVICE_ID=CCP_ROLE.SERVICE_ID" kind="Select">
      <ResultDescriptor columnName="SERVICE_ID" tableName="CCP_SERVICE"
columnType="commonj.sdo.Decimal"/>
       <ResultDescriptor columnName="NAME" tableName="CCP_SERVICE"
columnType="commonj.sdo.String"/>
       <ResultDescriptor columnName="AVAILABLE" tableName="CCP_SERVICE"
columnType="commonj.sdo.String"/>
      <ResultDescriptor columnName="ROLE_ID" tableName="CCP_ROLE"
columnType="commonj.sdo.Decimal"/>
       <ResultDescriptor columnName="NAME" tableName="CCP_ROLE" columnType="
commonj.sdo.String"/>
       <ResultDescriptor columnName="AVAILABLE" tableName="CCP_ROLE"
columnType="commonj.sdo.String"/>
    </Command>

 <Table tableName="CCP_SERVICE" typeName="Service">
        <Column columnName="SERVICE_ID" propertyName="serviceId"
primaryKey="true" />
        <Column columnName="NAME" propertyName="name"/>
        <Column columnName="AVAILABLE"
propertyName="available"/>
    </Table>


    <Table tableName="CCP_ROLE" typeName="Role">
        <Column columnName="ROLE_ID" propertyName="roleId"
primaryKey="true"/>
        <Column columnName="SERVICE_ID" propertyName="serviceId"/>
        <Column columnName="NAME" propertyName="name"/>
        <Column columnName="AVAILABLE"
propertyName="available"/>
    </Table>

/***************************java src code ****************************/

Connection conn=dataSource.getConnection();
            conn.setAutoCommit(false);
            DAS das=DAS.FACTORY.createDAS(new
ClassPathResource(schemaConfig).getInputStream(),conn);
            Command command=das.getCommand(commandName);
            if(param!=null) command.setParameter(1,param);
            DataObject root=command.executeQuery();
            List services=root.getList("Service");
            System.out.println(services.size());
            for(int i=0;i<services.size();i++){
                Service obj=(Service)services.get(i);
                System.out.println(obj.getServiceId());
                List roles=obj.getRoles();
                System.out.println("role size"+roles.size());
                for(int j=0;j<roles.size();j++){
                    Role role=(Role)roles.get(i);
                    System.out.println(role.getName());

                }

                 //here is add a new role into CCP_ROLE table
                Role newRole=UserFactory.INSTANCE.createRole();
                newRole.setRoleId(new BigDecimal(1));
                newRole.setName("test2322");
                newRole.setAvailable("1");
                newRole.setServiceId(new BigDecimal(14));
                roles.add(newRole);
            }

            das.applyChanges(root);

**********************************************************************
Question: CCP_SERVICE and CCP_ROLE is one to many relationship by SERVICE_ID
column. when I need to
                 add a new role of a service,  tuscany should add a new role
record into CCP_ROLE, however, it produces
a SQL:
           update CCP_SERVICE set roles = ? where SERVICE_ID = ?

My god!!!



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to