blob: fccd7f219c992f30f9ae4542a44de53fc776804b [file] [log] [blame]
##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