##included template. Generates the @Column annotation.
##Assumes that the context has a "column" and a "table" object
##generate annotation only the parameters for the column NOT default
##and the generateDLLAnnotation property is not set on the table
###------------------------------------------------
#macro( append $members $parameters )
#if( $members == "")
#set( $members = $parameters )
#else
#set( $members = "$members, $parameters" ) 
#end	
#end
###------------------------------------------------
#if ( $column.dataTypeLOB)
    @Lob()
#end
#if ( $column.needMapTemporalType)
    @Temporal( TemporalType.$column.temporalType)
#end
#set ($members = "")
#if ( !$column.default || $table.generateDDLAnnotations )
#set ($members = "name=$customizer.quote($column.name)")
#if (!$column.insertable)
#set ($members = "$members, insertable=false")
#end
#if (!$column.updateable)
#set ($members = "$members, updatable=false")
#end
#end
#if( $table.generateDDLAnnotations )
#if ($column.unique)
#append($members  "unique=true")
#end
#if (!$column.nullable)
#append($members  "nullable=false")
#end
#if ($column.size > 0)
#if ($column.numeric)
#append($members "precision=$column.size")
#if ($column.decimalDigits != 0 && $column.decimalDigits != -1)
#append($members "scale=$column.decimalDigits")
#end
#else
#if ( !$column.dataTypeLOB)
#append($members "length=$column.size")
#end
#end
#end
#end
#if( $members !="" )
	@Column($members)
#end
