| ##included template. Generates the @JoinTable, @JoinColumn or @JoinColumns annotation. |
| ##Assumes that the context has a "role" object representing the generated AssociationRole |
| ## |
| ##macro joinColumn uses $column, $referencedColumn |
| #macro (joinColumn $column $referencedColumn) |
| #set ($members = "name=$customizer.quote($column.joinColumnName)") |
| #if( !$referencedColumn.primaryKey || $referencedColumn.partOfCompositePrimaryKey ) |
| #set ($members = "$members, referencedColumnName=$customizer.quote($referencedColumn.name)") |
| #end |
| #if( $customizer.generateDDLAnnotations ) |
| #if ($column.unique && !$column.primaryKey) |
| #set ($members = "$members, unique=true") |
| #end |
| #if (!$column.nullable) |
| #set ($members = "$members, nullable=false") |
| #end |
| #end |
| #if ($customizer.generateDDLAnnotations && !$role.association.joinTable && !$role.referrerTable.isColumnUpdateInsert($role, $column)) |
| #set ($members = "$members, insertable=false, updatable=false") |
| #end |
| @JoinColumn($members)#end |
| ## |
| ## |
| ## |
| #if ($role.association.joinTable) |
| #set ($joinTable = $role.association.joinTable) |
| @JoinTable( |
| name="${joinTable.joinTableAnnotationName}" |
| , joinColumns={ |
| #foreach ($column in $role.referrerColumns) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| ##$referencedColumn is the column in the join table |
| #joinColumn($referencedColumn $column) |
| #if ($velocityCount < $role.referrerColumns.size() ) |
| , |
| #end |
| #end |
| |
| } |
| , inverseJoinColumns={ |
| #foreach ($column in $role.referencedColumns) |
| #set ($referencedColumn = $role.getReferrerColumn(${column.name})) |
| ##$referencedColumn is the column in the join table |
| #joinColumn($referencedColumn $column) |
| #if ($velocityCount < $role.referencedColumns.size() ) |
| , |
| #end |
| #end |
| |
| } |
| ) |
| #else |
| #if ($role.referrerColumns.size() == 1) |
| #set ($column = $role.referrerColumns.get(0)) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| #set ($referencedTableName = $role.getReferencedTable().getName() ) |
| #set( $referencedTablePkName = $role.getReferencedTable().getPrimaryKeyColumn().name ) |
| #set( $computedJoinColumnName = "${role.propertyName}_${referencedTablePkName}" ) |
| #set( $isDefaultJoinColumnName = $column.isDefaultJoinColumnName( ${role.propertyName}) ) |
| #if( ! $isDefaultJoinColumnName ) |
| #joinColumn($column $referencedColumn) |
| |
| #elseif( $customizer.generateDDLAnnotations ) |
| #joinColumn($column $referencedColumn) |
| |
| #end |
| #else |
| @JoinColumns({ |
| #foreach ($column in $role.referrerColumns) |
| #set ($referencedColumn = $role.getReferencedColumn(${column.name})) |
| #joinColumn($column $referencedColumn) |
| #if ($velocityCount < $role.referrerColumns.size() ) |
| , |
| #else |
| |
| #end |
| #end |
| }) |
| #end |
| #end |