##included template. Generates the @Basic, @Id, @Version annotations.
##Assumes that the context has a "column" object
##
#set ($mappingKind = $column.mappingKind)
#if ($mappingKind == "id")
	@Id
#set ($idGenerator = $table.idGenerator)
#if ($idGenerator == "auto")
#set ($generationType = "GenerationType.AUTO")
#elseif ($idGenerator == "identity")
#set ($generationType = "GenerationType.IDENTITY")
#elseif ($idGenerator == "sequence")
#set ($generationType = "GenerationType.SEQUENCE")
#elseif ($idGenerator == "table")
#set ($generationType = "GenerationType.TABLE")
#else
#set ($generationType = "")
#end
#if ($idGenerator == "sequence" )
#set ($generatorName = "${table.name.toUpperCase()}_${column.propertyName.toUpperCase()}_GENERATOR")
#if( $table.formattedSequence != "" )
	@SequenceGenerator(name="$generatorName", sequenceName="$table.formattedSequence")
#else
	@SequenceGenerator(name="$generatorName" )
#end
	@GeneratedValue(strategy=$generationType, generator="$generatorName")
#elseif ($generationType != "")
	@GeneratedValue(strategy=$generationType)
#end
#elseif ($mappingKind == "version")
	@Version
#else
##DEFAULT is @Basic, no need to generate
#end