我想弄清楚如何在Grails 3中的多个字段进行排序,其中之一可能或不可以为空。我有这本书域名:排序在GORM的可空字段
3210书籍中包含“外设”的标题有一个sortTitle
“外设,”否则sortTitle
将是无效的。如果存在sortTitle
,我需要按title
排序。
我发现了其他类似的SO问题,但都没有可空字段。有没有人碰巧有一些指向正确的方向?
我想弄清楚如何在Grails 3中的多个字段进行排序,其中之一可能或不可以为空。我有这本书域名:排序在GORM的可空字段
3210书籍中包含“外设”的标题有一个sortTitle
“外设,”否则sortTitle
将是无效的。如果存在sortTitle
,我需要按title
排序。
我发现了其他类似的SO问题,但都没有可空字段。有没有人碰巧有一些指向正确的方向?
我不能完全弄清楚如何与GORM做纯粹的,但一些生HQL工作:
def books = Book.findAll("from Book as b order by coalesce(b.sortTitle, b.title)")
我不是100%肯定在这,但在我看来,通过排序COALESCE会导致数据库进行文件分类,这可能相当昂贵,而不能够使用索引。
我的建议是总是用你想排序的名字填充sortTitle,然后使用它。
是的,我正在琢磨数据库的影响。这只是一个学习Grails的练习,我想解决这个问题,但对于一个现场制作应用程序,如果创建对象时'sortTitle'留空,我可能会将'sortTitle'设置为'title'的值。 –