Grails возвращает по одному элементу из каждого объекта

Я пытаюсь просто вернуть одну строку из каждого объекта.

Учитывая следующее:

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

для каждого экземпляра Book я хочу получить массив авторов, а затем сделать их уникальными. Я думал, ты можешь сделать что-то вроде:

def authors =  Book.findAllByAuthor()

Это просто дает мне массив книжных объектов. Я знаю, что могу

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

Я почти уверен, что есть способ просто собрать всех авторов в одну строку.

Любые идеи?


person Sagarmichael    schedule 22.01.2014    source источник


Ответы (2)


Это дает вам разных авторов любой книги:

  Book.executeQuery("select distinct author from Book")
person lukelazarovic    schedule 22.01.2014

Вы можете использовать прогнозы, чтобы получить четкий список авторов для всех книг. Дополнительные примеры см. В документации createCriteria.

def c = Book.createCriteria()
def authors = c.list() {
  projections {
    distinct('author')
  }
}
person Joshua Moore    schedule 22.01.2014