grails - 使用多个belongsTo,但一次只能使用一个

时间:2011-12-26 20:33:36

标签: grails gorm

如果我想使用域类,例如MoneyTransaction,有两个完全不同的目的,即:

1)当客户下订单时

2)当会员获得报酬时

这样我有类似的东西:

class Order {
   static hasMany = [transactions: MoneyTransaction]
}

class Member {
   static hasMany = [payments: MoneyTransaction]
}

class MoneyTransaction {
   static belongsTo = [order: Order, member: Member]
   static constraints = {
      order(nullable: true)
      member(nullable: true)
   }
}

然后本质上一次使用一个belongsTo / association,这是非常“标准”的用法,还是我需要切换这个建模?现在MoneyTransaction同时具有信用卡和ACH支付功能,因为它们都适用于订单。对于付款,只使用ACH部分。

1 个答案:

答案 0 :(得分:6)

根据您的要求,您发布的域类定义似乎是正确的。我在这里做的一个修改是添加一个自定义验证器,以确保订单和成员同时不为空。

    static constraints = {

    order(nullable: true, validator: {field, inst -> inst.member || field})
    member(nullable: true)

    }