В GORM, как сохранить порядок поля hasMany для отображения? - PullRequest
0 голосов
/ 27 июля 2011

Я использую Грааль 1.3.7.Допустим, у нас есть 2 домена: News, Topic, и это реализация:

class News {

    static hasMany = [ topics : Topic ]

    String title
    ....

}

class Topic {

    String title
    ....

}

Предположим, что есть новость с 10 темами.Какой самый лучший запрос и как отобразить ВСЕ новости в этом формате?

[News1 title] [Topic1 title]
[News1 title] [Topic2 title]
...
[News1 title] [Topic10 title]
[News2 title] [Topic3 title]
[News3 title] [Topic6 title]
...

Вот что у меня есть на данный момент:

def c = News.createCriteria()
def ret = c.list (max: size, offset: offset){
    topic {
        'in'('id', selectedTopicIds)
    }
    order("title", "desc")
}

// ret by this time contains 10 instances of News1
for (News r in ret){

    log.info("title: ${r.title}")

    // how can i maintain the order of r.topics on next loop?
    log.info("topic: ${r.topicsiterator().next().title}")
}

Можете ли вы рассказать мне лучшие практики или какие-либо советы длярешить это?Спасибо!

1 Ответ

0 голосов
/ 27 июля 2011

я бы использовал hql вместо критериев, чтобы избежать всей пост-обработки:

News.executeQuery("select news, topic from News as news inner join news.topics as topic group by news")

ОБНОВЛЕНИЕ

News.list().each { news ->
   news.topics.sort { it.title }.each { topic ->
        println "${news.title}: ${topic.title}"
   }
}

первое решение hql имеет лучшеепроизводительность, потому что сортировка выполняется БД.

...