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)

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

最佳答案

这将遍历所有书籍的标题,并创建一个Set而不是List。

Book.all.title as Set

更新
上面的代码将获取所有Book实例,如果您只需要title,这些实例可能很繁琐。您也可以尝试使用条件或HQL仅获取标题列表。
def titleSet = Book.createCriteria().listDistinct {
    projections {
        property('title')
    }
}

关于grails - 如何在Groovy中获得一组字段值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21710170/

10-16 17:45