Определение порядка сортировки по умолчанию в Grails/GORM

StackOverflow https://stackoverflow.com/questions/520187

  •  21-08-2019
  •  | 
  •  

Вопрос

Допустим, я определил пользовательский объект с помощью GORM.У каждого пользователя может быть ноль или более логинов.Каждый вход в систему имеет временную метку.При получении user.logins я хочу, чтобы логины были отсортированы на основе значения login.date.Каков правильный способ Grails достичь этого?

Пример:Я хочу, чтобы в следующем коде были перечислены все логины пользователя в порядке возрастания.

<g:each var="login" in="${user.logins}">
  <tr>
    <td>${login.date}</td>
  </tr>
</g:each>

Это классы, на которые даны ссылки:

class User {
  ...
  def hasMany = [logins: Login]
  static fetchMode = [logins: "eager"]
}

class Login {
  Date date
  ...
  def belongsTo = [User]
}

Я запускаю Grails 1.0.4, который является последней стабильной версией.

Это было полезно?

Решение 3

Обработка порядка сортировки по умолчанию в Grails / GORM, похоже, была радикально упрощена в Grails 1.1:

Другие советы

Они показывают, как это сделать, на странице GORM в справочном руководстве (раздел 5).Нужный вам фрагмент находится в нижней части этого документа - это нужный вам раздел.У них есть два простых примера:

class Airport {
    …
    static mapping = {
        sort "name"
    }
}

class Airport {
    …
    static mapping = {
        sort name:"desc"
    }
}

У них также есть пример сортировки по ассоциации:

class Airport {
    …
    static hasMany = [flights:Flight]
    static mapping = {
        flights sort:'number'
    }
}

Просто сделайте так, чтобы класс Login реализовал Сопоставимый интерфейс:

class Login implements Comparable {

    // ...

    Date date

    public int compareTo(def other) {
        return date <=> other?.date // <=> is the compareTo operator in groovy
    }

}

и объявите отношение как SortedSet:

class User {
  ...
  def hasMany = [logins: Login]               
  SortedSet logins

  static fetchMode = [logins: "eager"]
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top