blob: ece3ff4c3fdc7a228e53b2b6ba35ce5455229a5d [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 )
#set ($members = "$members, referencedColumnName=$customizer.quote($referencedColumn.name)")
#end
#if( $table.generateDDLAnnotations )
#if ($column.unique && !$column.primaryKey)
#set ($members = "$members, unique=true")
#end
#if (!$column.nullable)
#set ($members = "$members, nullable=false")
#end
#end
#if (!$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}"
#if ($joinTable.schema!="")
, schema="${joinTable.schema}"
#end
, joinColumns={
#foreach ($column in $role.referrerColumns)
#set ($referencedColumn = $role.getReferencedColumn(${column.name}))
##$referencedColumn is the column in the join table
#joinColumn($referencedColumn $column),
#end
}
, inverseJoinColumns={
#foreach ($column in $role.referencedColumns)
#set ($referencedColumn = $role.getReferrerColumn(${column.name}))
##$referencedColumn is the column in the join table
#joinColumn($referencedColumn $column),
#end
}
)
#else
#if ($role.referrerColumns.size() == 1)
#set ($column = $role.referrerColumns.get(0))
#set ($referencedColumn = $role.getReferencedColumn(${column.name}))
#joinColumn($column $referencedColumn)
#else
@JoinColumns({
#foreach ($column in $role.referrerColumns)
#set ($referencedColumn = $role.getReferencedColumn(${column.name}))
#joinColumn($column $referencedColumn),
#end
})
#end
#end