Хранение чисел в виде отформатированных строк не позволяет им использовать преимущества собственной числовой сортировки.Посмотрите на тег Grails formatNumber, который может использовать желаемую локаль для отображения десятичных разделителей, чтобы вы могли использовать фактические числовые данные и не нужно сохранять отформатированную строку для целей отображения.
Если вам нужен класс доменадля сортировки используются как отформатированные, так и неформатированные числовые данные, вы можете попробовать что-то вроде этого, подставив при необходимости параметр столбца сортировки:
def list = {
if (params?.sort == 'formattedNumber') {
params.sort = 'rawNumber'
}
[ records : Record.list(params) ]
}
Если в вашем доменном классе есть только отформатированная строка, вы можете попытаться проанализировать ееBigDecimal (или любой другой соответствующий числовой тип), но это может не работать должным образом, если языковой стандарт вашего сервера не совпадает с языковым стандартом десятичного разделителя строкового формата.
def list = {
def records = (params?.sort == 'formattedNumber') Record.list().sort{ it.formattedNumber.toBigDecimal() : Record.list(params)
}
[ records : records ]
}