jmcnally    2002/06/22 18:41:04

  Modified:    src/rttest bookstore-schema.xml
               src/templates/om Object.vm ObjectWithManager.vm
  Log:
  patch by Alexis HAUMONT <[EMAIL PROTECTED]>
  and also modified for ObjectWithManager.vm by jmcnally
  Also added the test table as a part of the rttest.
  
  On our project, we found (and fix) a problem related to self-refered table
  when the PK is a multi-column PK.
  
  Here's a minimalist schema to reproduce it :
  
      <database>
          <table name="TEST_TABLE">
              <column name="COL1" primaryKey="true" required="true"
  type="DECIMAL"/>
              <column name="COL2" primaryKey="true" required="true"
  type="DECIMAL"/>
  
              <column name="PARENT_COL1" required="true" type="DECIMAL"/>
              <column name="PARENT_COL2" required="true" type="DECIMAL"/>
  
              <foreign-key foreignTable="TEST_TABLE">
                  <reference foreign="COL1" local="PARENT_COL1"/>
                  <reference foreign="COL2" local="PARENT_COL2"/>
              </foreign-key>
          </table>
          </database>
  
  The generated Object TestTable.java won't compile, the generated methods
  getTestRelatedBy**** are broken :
  On one side, the Object.vm creates a reference to the pointed TestTable
  object with the name :
          aTestTableRelatedByParentCol1Col2
  
  But on an other portion of the velocity code, it is reffered as
          aTestTableRelatedByParentCol1
  
  The code works for a Single column PK but not for my test Case :
  
  Revision  Changes    Path
  1.9       +13 -0     jakarta-turbine-torque/src/rttest/bookstore-schema.xml
  
  Index: bookstore-schema.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/rttest/bookstore-schema.xml,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- bookstore-schema.xml      8 Mar 2002 23:07:47 -0000       1.8
  +++ bookstore-schema.xml      23 Jun 2002 01:41:04 -0000      1.9
  @@ -199,4 +199,17 @@
       />
     </table>
   
  +  <table name="MULTIPK_SELF_REFTABLE">
  +    <column name="COL1" primaryKey="true" required="true" type="DECIMAL"/>
  +    <column name="COL2" primaryKey="true" required="true" type="DECIMAL"/>
  +            
  +    <column name="PARENT_COL1" required="true" type="DECIMAL"/>
  +    <column name="PARENT_COL2" required="true" type="DECIMAL"/>
  +            
  +    <foreign-key foreignTable="MULTIPK_SELF_REFTABLE">
  +      <reference foreign="COL1" local="PARENT_COL1"/>
  +      <reference foreign="COL2" local="PARENT_COL2"/>
  +    </foreign-key>
  +  </table>
  +
   </database>
  
  
  
  1.37      +9 -1      jakarta-turbine-torque/src/templates/om/Object.vm
  
  Index: Object.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/templates/om/Object.vm,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- Object.vm 22 Jun 2002 18:34:07 -0000      1.36
  +++ Object.vm 23 Jun 2002 01:41:04 -0000      1.37
  @@ -170,7 +170,15 @@
               #set ( $tblFK = $table.Database.getTable($col.RelatedTableName) )
               #set ( $colFK = $tblFK.getColumn($col.RelatedColumnName) )
               #if ($col.isMultipleFK() || $col.RelatedTableName.equals($table.Name))
  -              #set ( $varName = "a${tblFK.JavaName}RelatedBy$col.JavaName" )
  +                #set ( $relCol = "" )
  +                  #foreach ($columnName in $col.foreignKey.LocalColumns)  
  +                      #set ( $column = $table.getColumn($columnName) )
  +                      #set ( $relCol = "$relCol$column.JavaName" )
  +                  #end
  +                 #if ($relCol != "")
  +                     #set ( $relCol = "RelatedBy$relCol" )
  +                 #end
  +                 #set ( $varName = "a${tblFK.JavaName}$relCol" )
               #else
                 #set ( $varName = "a$tblFK.JavaName" )
               #end
  
  
  
  1.15      +9 -1      jakarta-turbine-torque/src/templates/om/ObjectWithManager.vm
  
  Index: ObjectWithManager.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/templates/om/ObjectWithManager.vm,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ObjectWithManager.vm      22 Jun 2002 18:34:07 -0000      1.14
  +++ ObjectWithManager.vm      23 Jun 2002 01:41:04 -0000      1.15
  @@ -175,7 +175,15 @@
               #end    
               #set ( $colFK = $tblFK.getColumn($col.RelatedColumnName) )
               #if ($col.isMultipleFK() || $col.RelatedTableName.equals($table.Name))
  -              #set ( $varName = "a${interfaceName}RelatedBy$col.JavaName" )
  +                #set ( $relCol = "" )
  +                  #foreach ($columnName in $col.foreignKey.LocalColumns)  
  +                      #set ( $column = $table.getColumn($columnName) )
  +                      #set ( $relCol = "$relCol$column.JavaName" )
  +                  #end
  +                 #if ($relCol != "")
  +                     #set ( $relCol = "RelatedBy$relCol" )
  +                 #end
  +                 #set ( $varName = "a${interfaceName}$relCol" )
               #else
                 #set ( $varName = "a$interfaceName" )
               #end
  
  
  

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

Reply via email to