Grails从每个对象返回一个元素

时间:2014-01-22 10:36:30

标签: grails gorm

我试图从每个对象返回一个字符串。

鉴于以下内容:

 class Book {
String title
Date releaseDate
String author
Boolean paperback
}

对于Book的每个实例我想获得一系列作者然后使它们成为唯一的。 我以为你可以这样做:

def authors =  Book.findAllByAuthor()

这只是给了我一个关于书籍对象的数组。 我知道我可以做一个

a =[]
authors.each{a.add(it.author)}
a.unique()

我几乎可以肯定,有一种方法可以在一行中抓住所有作者。

任何想法?

2 个答案:

答案 0 :(得分:1)

您可以使用投影来获取所有图书中不同的作者列表。有关更多示例,请查看createCriteria documentation

def c = Book.createCriteria()
def authors = c.list() {
  projections {
    distinct('author')
  }
}

答案 1 :(得分:1)

这为您提供了任何书籍的独特作者:

  Book.executeQuery("select distinct author from Book")