I applied your patch. thank you. I also added your table to the tests.
john mcnally
On Fri, 2002-06-07 at 07:34, Alexis HAUMONT wrote:
>
> Hi all,
>
> On our project, we found (and fix) a problem related to self-refered table
> when the PK is a multi-column PK.
>
> Were using torque-3.0-b2, ( btw, is there an plan for tagging beta 3, I'd
> like to get my project DataSource/Jndi compliant).
>
> 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 :
>
>
>
> compile:
> [javac] Compiling 1 source file to D:\projets\sicol\war\WEB-INF\classes
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:176:13:176:13:
> Error: No field named "aTestTableRelatedByParentCol1" was found in type
> "sicol/om/BaseTestTable". However, there is an accessible field
> "aTestTableRelatedByParentCol1ParentCol2" whose name closely matches the
> name "aTestTableRelatedByParentCol1".
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:176:71:176:71:
> Error: "aTestTableRelatedByParentCol1" is either a misplaced package name or
> a non-existent entity.
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:178:13:178:13:
> Error: No field named "aTestTableRelatedByParentCol1" was found in type
> "sicol/om/BaseTestTable". However, there is an accessible field
> "aTestTableRelatedByParentCol1ParentCol2" whose name closely matches the
> name "aTestTableRelatedByParentCol1".
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:228:13:228:13:
> Error: No field named "aTestTableRelatedByParentCol2" was found in type
> "sicol/om/BaseTestTable". However, there is an accessible field
> "aTestTableRelatedByParentCol1ParentCol2" whose name closely matches the
> name "aTestTableRelatedByParentCol2".
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:228:71:228:71:
> Error: "aTestTableRelatedByParentCol2" is either a misplaced package name or
> a non-existent entity.
> [javac] D:/projets/sicol/src/sicol/om/BaseTestTable.java:230:13:230:13:
> Error: No field named "aTestTableRelatedByParentCol2" was found in type
> "sicol/om/BaseTestTable". However, there is an accessible field
> "aTestTableRelatedByParentCol1ParentCol2" whose name closely matches the
> name "aTestTableRelatedByParentCol2".
>
>
> And here is the patch for Object.vm r 1.24 that correct this problem :
>
> ***
> cvs diff -N -u "Object.vm"
> Index: Object.vm
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-turbine-torque/src/templates/om/Object.vm,v
> retrieving revision 1.24
> diff -u -r1.24 Object.vm
> --- Object.vm 14 Mar 2002 12:38:49 -0000 1.24
> +++ Object.vm 7 Jun 2002 14:19:37 -0000
> @@ -174,7 +174,15 @@
> #if ( !($tblFK.Name.equals($table.Name)) )
> #set ( $colFK = $tblFK.getColumn($fkColName) )
> #if ($colFK.isMultipleFK())
> - #set ( $collName =
> "coll${tblFK.JavaName}sRelatedBy$colFK.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 ( $collName = "coll${tblFK.JavaName}s" )
> #end
>
>
>
> Could someone try it and commit it ?
> Thanks,
> Alexis.
>
> -------------------
> M. Alexis HAUMONT
> SMILE
> 93, rue Amp�re
> 75 017 PARIS - FRANCE
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>