Запрос ассоциации «многие ко многим» в Grails

У меня отношения многие ко многим.

class Post {
    String title
    static hasMany = [tags:Tag]
}

class Tag {
    static hasMany = [posts:Post]
}

Я хотел бы получить список сообщений для тега, которые имеют некоторые другие критерии (например, порядок сортировки, частичное совпадение заголовка и т. д.). Должен ли я должен использовать критерии Grails для достижения этой цели? Или есть способ сделать что-то вроде этого:

Post.findAllByTitleLikeAndTagsContains("partial title", aTag)

person Blacktiger    schedule 12.01.2010    source источник


Ответы (2)


Я не думаю, что динамические средства поиска позволят вам получить ассоциации «один ко многим» или «многие ко многим» - вам нужно выполнить критерии или пройти маршрут запроса HQL. Вы можете запрашивать только ассоциацию «один к одному», а не «один ко многим». (см. раздел 5.4. .1 Динамические средства поиска)

person Jean Barmash    schedule 12.01.2010
comment
Да, динамические средства поиска поддерживают только простые свойства - время критерия! - person leebutts; 13.01.2010
comment
Это то, о чем я думал. Я действительно хотел бы, чтобы у Grails был простой способ сделать это, но я думаю, что мне просто нужно поместить его в JIRA. - person Blacktiger; 13.01.2010

Вы можете использовать withCriteria, например:

Post.withCriteria{
    tags {
        eq 'id',aTag.id
    }
 }
person Ford Guo    schedule 28.12.2011
comment
Верно, но если бы вы прочитали мой вопрос, вы бы заметили, что я просил способ сделать это без использования критериев. - person Blacktiger; 04.01.2012