如何在groovy中获取一组字段值?

时间:2014-02-11 18:32:15

标签: grails groovy gorm

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)

但我正在寻找一种更加时髦的方式。

2 个答案:

答案 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')
    }
}