Grails - как навязать хотя бы один в отношениях один-ко-многим - PullRequest
2 голосов
/ 06 августа 2010

Не могли бы вы помочь с приведенным ниже примером:

class Car {

    static hasMany = [cd:Cd, fluffyDice:FluffyDice, wheel:Wheel]

}



class Wheel{

     static belongsTo = [car:Car]

}

Как мне обеспечить, чтобы в автомобиле было хотя бы одно колесо?

Ответы [ 2 ]

5 голосов
/ 06 августа 2010

Вы можете использовать ограничение minSize.Обратите внимание, что вам нужно инициализировать набор.Обычно вы этого не делаете - Grails делает это за вас - но ограничение не срабатывает для пустой коллекции:

class Car {
   Set wheels = []
   static hasMany = [wheels: Wheel]
   static constraints = {
      wheels minSize: 1
   }
}

Я переименовал wheel в wheels, поскольку это набор и имя во множественном числеболее естественно, особенно при добавлении элементов, например, автомобиля. addToWheels(new Wheel(...)).Но это не влияет на функциональность.

0 голосов
/ 06 августа 2010

это заставит быть хотя бы одно колесо или будет сгенерировано исключение

class Car {
    List wheels
    static hasMany = [cds:Cd, fluffyDice:FluffyDice, wheels:Wheel]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...