2014-01-22 5 views
0

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

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

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

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

def authors = Book.findAllByAuthor() 

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

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

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

любые идеи?

ответ

1

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

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

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

def c = Book.createCriteria() 
def authors = c.list() { 
    projections { 
    distinct('author') 
    } 
} 
Смежные вопросы