| ##macro joinColumn |
| #macro (joinColumn $column $referencedColumn) |
| #set ($members = "name=$customizer.convertToJavaStringLiteral($column.joinColumnName)") |
| #if (!$referencedColumn.primaryKey || $referencedColumn.partOfCompositePrimaryKey) |
| #set ($members = "$members referenced-column-name=$customizer.convertToJavaStringLiteral($referencedColumn.name)") |
| #end |
| <join-column $members/> |
| #end |
| ##macro inverseJoinColumn |
| #macro (inverseJoinColumn $column $referencedColumn) |
| #set ($members = "name=$customizer.convertToJavaStringLiteral($column.joinColumnName)") |
| #if (!$referencedColumn.primaryKey || $referencedColumn.partOfCompositePrimaryKey) |
| #set ($members = "$members referenced-column-name=$customizer.convertToJavaStringLiteral($referencedColumn.name)") |
| #end |
| <inverse-join-column $members/> |
| #end |
| ## |
| ## |
| #### JoinTables |
| #if ($role.association.joinTable) |
| #set ($joinTable = $role.association.joinTable) |
| <join-table name=$customizer.convertToJavaStringLiteral(${joinTable.joinTableAnnotationName})> |
| #foreach ($column in $role.referrerColumns) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| ##$referencedColumn is the column in the join table |
| #joinColumn($referencedColumn $column) |
| #end |
| #foreach ($column in $role.referencedColumns) |
| #set ($referencedColumn = $role.getReferrerColumn(${column.name})) |
| ##$referencedColumn is the column in the join table |
| #inverseJoinColumn($referencedColumn $column) |
| #end |
| </join-table> |
| #### JoinColumn |
| #else |
| #if ($role.referrerColumns.size() == 1) |
| #set ($column = $role.referrerColumns.get(0)) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| #set( $isDefaultJoinColumnName = $column.isDefaultJoinColumnName( ${role.propertyName})) |
| #if (! $isDefaultJoinColumnName) |
| #joinColumn($column $referencedColumn) |
| #end |
| #### JoinColumns |
| #else |
| #foreach ($column in $role.referrerColumns) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| #joinColumn($column $referencedColumn) |
| #end |
| #end |
| #end |