##included template. Generates the @ManyToMany annotation.
##Assumes that the context has a "role" object representing the generated AssociationRole
##
#if ($role.association.bidirectional && !$role.isReferrerRole())##the owning side (either side for many-to-many)
#set ($members = $customizer.appendAnnotation("", "mappedBy", $role.oppositeRole.propertyName, true))
#set ($members = $customizer.appendAnnotation($members, "cascade", $customizer.genCascades($role), false))
#if($customizer.genFetch($role.referrerTable)!="" && $customizer.genFetch($role.referrerTable)!="FetchType.LAZY")
#set ($members = $customizer.appendAnnotation($members, "fetch", $customizer.genFetch($role.referrerTable), false))
#end
#if($members!="")
	@ManyToMany($members)
#else	
    @ManyToMany
#end    
#else
#set ($members = $customizer.appendAnnotation("", "cascade", $customizer.genCascades($role), false))
#if($customizer.genFetch($role.referrerTable)!="" && $customizer.genFetch($role.referrerTable)!="FetchType.LAZY")
#set ($members = $customizer.appendAnnotation($members, "fetch", $customizer.genFetch($role.referrerTable), false))
#end
#if($members!="")
	@ManyToMany($members)
#else	
    @ManyToMany
#end    
#parse("join.vm")
#end