Grails排序忽略区分大小写

时间:2016-02-12 07:12:57

标签: grails gorm

games = Game.where {
    categories.categoryName == currentCategory
    platform.platformName == chosenPlatform
    status == "okay"
}.list(sort: 'gameTitle', order: "asc", max: max, offset: offset)

所以在这里我按照名字对游戏进行排序,问题是大写字母首先出现,所以Delta在bravo之前出现,应该是另一种方式。你怎么用grails做到这一点?

2 个答案:

答案 0 :(得分:2)

您必须使用派生属性

class Game {
    String title

   static mapping = {
       titleUpper formula: 'UPPER(title)'
   }
}

和您的列表

games = Game.where {
    categories.categoryName == currentCategory
    platform.platformName == chosenPlatform
    status == "okay"
}.list(sort: 'titleUpper', order: "asc", max: max, offset: offset)

答案 1 :(得分:1)

这纯粹是数据库 - Grails / Gorm / Hibernate生成一个查询,将其发送到您的数据库并处理结果 - 就是这样。如果您的数据库排序区分大小写,那么您有两个选项:

  • 将列(或可能的整个数据库)设置为不区分大小写。
  • UPPER子句中使用功能(如LOWERORDER BY)(例如ORDER BY UPPER(game_title)

有关公式字段的详情,请参阅http://grails.github.io/grails-doc/latest/guide/GORM.html#5.5.2.11%20Derived%20Properties