我试图弄清楚如何对Grails 3中的多个字段进行排序,其中一个字段可能为空,也可能不为空。我有这本书的域名:
class Book {
String title
String sortTitle
static constraints = {
title blank: false
sortTitle nullable: true
}
}
书籍标题为" The Peripheral"有一个sortTitle
"外围设备,",否则sortTitle
将为空。我希望书籍按sortTitle
排序(如果存在),否则按title
排序。
我发现了其他类似的SO问题,但没有一个可以为空的字段。有没有人碰巧在正确的方向上有一些指示?
答案 0 :(得分:2)
答案 1 :(得分:1)
我对此并不是100%肯定,但在我看来,通过合并进行排序会导致数据库进行文件排序,这可能相当昂贵,而不是能够使用索引。
我的建议是始终使用您要排序的名称填充sortTitle,然后使用它。
答案 2 :(得分:0)
我无法完全弄清楚如何使用GORM完成它,但是有些原始HQL有效:
def books = Book.findAll("from Book as b order by coalesce(b.sortTitle, b.title)")