Grails - 如何在一对多关系中强制执行至少一个

时间:2010-08-05 21:14:59

标签: hibernate grails groovy

请帮助您解决以下示例:

class Car {

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

}



class Wheel{

     static belongsTo = [car:Car]

}

如何强制执行汽车至少有一个车轮?

2 个答案:

答案 0 :(得分:5)

您可以使用minSize约束。请注意,您需要初始化该集。通常你不这样做 - Grails会为你做这件事 - 但是对于null集合,约束不会触发:

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

我将wheel重命名为wheels,因为它是一个集合,复数名称更自然,尤其是在添加元素时,例如车addToWheels(new Wheel(...))。但这对功能没有影响。

答案 1 :(得分:0)

这将迫使至少有一个轮子或将抛出异常

class Car {
    List wheels
    static hasMany = [cds:Cd, fluffyDice:FluffyDice, wheels:Wheel]
}