如何定义 Grails 域对象关系

How to define Grails Domain Objects Relationships

您好,我是 Grails 的新手,我想就如何在 Grails 中为以下场景定义域 class 寻求专家建议:

  1. 一个买家可以购买很多商品
  2. 一次送货可以包含很多物品,不一定是买家购买的所有物品,因为有些物品会在稍后送达。
  3. 送货不能包含买家尚未购买的任何新商品。

所以它们之间的关系如下:

  1. 一个买家可以拥有多件商品

  2. 一个买家可以多次送货

  3. 一次送货可以有很多件

我已经定义了域 classes;但结果。高手能指出我做错了什么吗?非常感谢!

class Buyer {

    static constraints = {
    }

    String  buyerName
    static hasMany = [purchases : GoodsPurchased]    

}

class GoodsPurchased {

    static constraints = {
        delivery nullable:true
    }

    String goodsName
    static belongsTo = [ buyer: Buyer, delivery : Delivery ]

}

class Delivery {

    static constraints = {
    }

    Date    deliveryDate
    static  belongsTo = [ buyer : Buyer ]
    static  hasMany = [ purchases : GoodsPurchased ]

}

一次送货可以包含一件或多件买家购买的商品;因为并非所有物品都是交付所必需的。我们如何在域 class 中定义 - 送货只能包含买家之前购买过的商品?我们如何在 Grails 中进行限制?

如果您想在域中实现此目的 Class,您可以在域中插入或更新对象之前触发的 beforeInsert() 和 beforeUpdate() 中检查这些业务规则 class。

您可以在此处获得更多相关信息:http://gorm.grails.org/6.0.x/hibernate/manual/

但是,实现这些业务逻辑的最佳位置仍然在服务中,或者将用户在 GSP 中的列表限制为 select。

希望这对您有所帮助。