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]>