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