(Quick Reference)
                joinTable
Purpose
Customizes the join table used for undirectional one-to-many, many-to-many and primitive collection types.
Examples
Basic collection type:
class Book {    static hasMany = [chapterPageCounts: Integer]    static mapping = {
        chapterPageCounts indexColumn: [name: "chapter_number", type: Integer],
                          joinTable: [column: "page_count"]}Enum collection types:
enum VehicleStatus { OFF, IDLING, ACCELERATING, DECELERATING }class Truck {    static hasMany = [states: VehicleStatus]    static mapping = {
        states joinTable: [name: 'VEHICLE_STATUS_LOG',
                           key: 'TRUCK_ID', column: 'STATUS']
    }
}Many-to-many:
class Book {    String title    static belongsTo = Author    static hasMany = [authors: Author]    static mapping = {
        authors joinTable: [name: "mm_author_books", key: 'mm_book_id' ]
    }
}class Author {    String name    static hasMany = [books: Book]    static mapping = {
        books joinTable: [name: "mm_author_books", key: 'mm_author_id']
    }
}Unidirectional One-to-many:
class Employee {    static hasMany = [projects: Project]    static mapping = {
        projects joinTable: [name: 'EMP_PROJ',
                             column: 'PROJECT_ID',
                             key: 'EMPLOYEE_ID']
    }
}Description
Usage: 
association_name(joinTable:map)Arguments:
- name- The table name
- key(optional) - The foreign key
- column(optional) - The inverse column
GORM has various strategies for mapping association types. Some of them, such as basic collection types and many-to-many associations, use a join table. You can customize how this join table is created using the 
joinTable argument.