2013-11-11 4 views
3

Это вопрос новичков, любая помощь будет оценена. У меня есть класс Item следующим образом.Как сохранить данные в отсортированном порядке в GORM

 
class Item { 
    String name 
    // other properties ... 

    static constraints = { 
     name(blank: false, unique: true) 
     // other constraints ... 
    } 
} 

Как сохраняться в Item с в отсортированном порядке в Grails/GORM? Значение, если бы я сделал

 
new Item(name: 'a').save(flush: true, failOnError: true) 
new Item(name: 'c').save(flush: true, failOnError: true) 
new Item(name: 'b').save(flush: true, failOnError: true) 

println Item.getAll().name 

я должен получить [a, b, c]. Спасибо!

ответ

1

Добавьте это в вашем классе домена

static mapping = { 
    sort name: "desc" //"asc" 
} 
+0

Это прекрасно работает, спасибо! Один комментарий, однако, я должен использовать Item.list() вместо Item.getAll(). Метод getAll() не печатает отсортированный список даже при включенном отображении. Мне нравится этот подход к сопоставлению, поскольку мне не нужно сортировать() каждый раз, когда я извлекаю данные. – tikka

+2

имя сортировки: «desc» не гарантирует порядок вставки. Это способ настроить свойство по умолчанию для сортировки по результатам запроса (http://grails.org/doc/latest/ref/Database%20Mapping/sort.html) – cantoni

+0

@cantoni: Есть ли способ гарантировать порядок вставки? Думаю, я понял вашу мысль - спасибо за разъяснение. – tikka

4

Presisting не имеет значения, но, что важно, как вы его извлечения, и вы можете просто сделать, как следовать

println Item.list().sort() 

println Item.list().sort(){ //write your groovy clouser here to sort asc and dec } 
+0

Спасибо! Однако мне было интересно, есть ли способ сохранить данные в отсортированном порядке в первую очередь? Причина в том, что если это большая таблица со многими строками, и если я получаю данные очень часто, sort() будет медленнее, я думаю (поскольку каждый раз, когда я извлекаю данные, он будет выполнять сортировку). Фон - это элемент глоссария элементов, и я буду добавлять новые элементы в таблицу реже, но часто получаю данные. Любые комментарии будут оценены. – tikka

+2

Чтобы сохранить элементы в определенном порядке, вы можете отобразить свою коллекцию в виде списка. Подробнее см. Http://docs.codehaus.org/plugins/servlet/mobile#content/view/228171330. – rcgeorge23

+0

Спасибо, @ rcgeorge23. Я мог бы использовать SortedSet для пользовательского заказа. Я нашел последнюю версию документа, на который вы ссылались (http://grails.org/doc/latest/guide/GORM.html#sets,ListsAndMaps). Спасибо за очень полезные советы! – tikka

Смежные вопросы