class Book {
String title
}
def book = new Book(title: 'title1')
def book = new Book(title: 'title2')
def book = new Book(title: 'title3')
我如何获得这组标题?像titleSet = ['title1', 'title2', 'title3']
我想也许像def titleSet = Book.findTitles();
这样的东西会起作用,但我找不到那样的东西。
我知道我能做到:
def books = Book.list()
def titleSet
for(def book : books)
titleSet.add(book.title)
但我正在寻找一种更加时髦的方式。
答案 0 :(得分:3)
尝试
Set titleSet = books*.title
或者
Set titleSet = books.collect { it.title }
答案 1 :(得分:3)
这会查看所有书籍的标题,并创建一个Set而不是List。
Book.all.title as Set
UPDATE
如果您只需要title
,上面将获取可能很重的所有Book实例。您也可以尝试使用条件或HQL来获取标题列表。
def titleSet = Book.createCriteria().listDistinct {
projections {
property('title')
}
}