Вложенный findAllBy * - PullRequest
       3

Вложенный findAllBy *

1 голос
/ 20 декабря 2011

У меня есть 3 класса домена:

class Contract {

    String referenceNumber

    static belongsTo = [subCategory:SubCategory]
}

class SubCategory {

    String name

    static belongsTo = [category:Category]
    static hasMany = [contracts:Contract]
}

class Category {

    String name

    static hasMany = [subCategories:SubCategory]
}

Я хочу найти все контракты, которые относятся к данной категории (поэтому получите все подкатегории для данной категории, а затем получите все контракты для всех этих подкатегорий.категории).Это то, что я пытался:

Contract.findAllBySubCategory(SubCategory.findAllByCategory(Category.get(1)))

, но продолжает выдавать ошибку:

groovy.lang.MissingMethodException: Нет подписи метода: Contract.findAllBySubCategory () не применимодля типов аргументов: (java.util.ArrayList) значения: [[SubCat01, SubCat02, SubCat03]] Возможные решения: findAllBySubCategory (java.util.List)

Кто-нибудь знает, что я делаюнеправильно?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Ответ JamesA верен, просто для полноты картины я также хотел бы сказать, что это кажется подходящим для критерия запроса

Category category = Category.get(1)
List<Contracts> contracts = Contract.createCriteria.list {
  subCategory {
    eq('category', category)
  }
}
2 голосов
/ 20 декабря 2011

Динамический искатель findAll возвращает список, но по умолчанию ожидает скалярный параметр. Попробуйте использовать компаратор InList.

Contract.findAllBySubCategoryInList(SubCategory.findAllByCategory(Category.get(1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...