Grails 1.1 对象关联映射 (GORM) - List对象

如果你只是想保持对象的顺序,添加它们和引用它们通过索引,就像array一样,你可以定义你的集合类型为 List:class Author { List books static hasMany = [books:Book] }在这种情况下当你向books集合中添加一个新元素时,这个顺序将会保存在一个从0开始的列表索引中,因此你可以:author.books[0] // get the first book这种方法在数据库层的工作原理是:为了在数据库层保存这个顺序,Hibernate创建一个叫做books_idx的列,它保存着该元素在集合中的索引。

当使用List时,元素在保存之前必须先添加到集合中,否则Hibernate会抛出异常[code](org.hibernate.HibernateException: null index column for collection):
// This won’t work!
def book = new Book(title: ‘The Shining’)
book.save()
author.addToBooks(book)

// Do it this way instead.
def book = new Book(title: ‘Misery’)
author.addToBooks(book)
author.save()[/code]