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

Ray*_*Ray 4 grails grails-orm

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

1)当客户下订单时

2)会员获得报酬时

这样我有类似的东西:

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

class Member {
   static hasMany = [payments: MoneyTransaction]
}
Run Code Online (Sandbox Code Playgroud)

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

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

Anu*_*ora 6

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

    static constraints = {

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

    } 
Run Code Online (Sandbox Code Playgroud)