如何定义Grails域对象关系

时间:2017-04-26 09:50:05

标签: grails relationship grails-domain-class

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

  1. 买家可以购买很多物品
  2. 交货可以包含许多物品,而不是买家购买的所有物品,因为有些物品将在以后交付。
  3. 交货不能包含买家尚未购买的任何新商品。
  4. 以下是它们之间的关系:

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

    2. 一位买家可以有很多送货

    3. 一次送货可以有很多商品

    4. 我已经定义了域类;但结果。专家能否指出我做错了什么?非常感谢你!

      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 ]
      
      }
      

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

1 个答案:

答案 0 :(得分:0)

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

您可以在此处获取有关此内容的更多信息:http://gorm.grails.org/6.0.x/hibernate/manual/

但是,实现这些业务逻辑的最佳位置仍在服务中,或限制GSP中的列表供用户选择。

希望这会有所帮助。