The Grails Framework 4.0.11

(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']
        }
    }
    class Project {  }
### 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. | Quick Reference (hide)