The reason for using a join table for a one-to-many unidirectional relationship is that many aspects of a relationship can have many relationships and are not aware of these relationships. Perhaps the best example is here:
class Book {
String title
}
class BookStore {
String name
static hasMany = [books: Book]
}
class Library {
String name
static hasMany = [books: Book]
}
In the above a domain Bookneed not have IDs BookStore, and Libraryon the table. A Bookworks great without them. Using join tables, this prevents foreign books from polluting the book table.
Keep in mind that this is a modeling of unidirectional rather than bidirectional relationships.
source
share