举个例子:
该应用程序包含不同类型联系人的域类,例如
经理,ShopSteward,飞行员,棒球教练等
它们都是单独的类,因此在数据库中都有自己的单独表。
常见的要求是记录多个电子邮件地址。为了避免重复的代码,我会在src / groovy中创建一个名为EmailAddress的@Validatable类,当然包含emailAddress,以及该地址的可选标签。
现在,为了让所有这些不同的Domain类能够针对它们记录多个电子邮件地址,最好是创建新的Domain类来扩展EmailAddress并链接回关系的所有者方?
E.g。
class ManagerEmailAddress extends EmailAddress {
static belongsTo = [Manager]
}
&安培;添加
hasMany = [emails:ManagerEmailAddress]
到Manager类?或者,为了识别拥有的实体,是否有一个具有大量鉴别器的单个EmailAddresses表更好?
提前感谢您的意见/回复。
答案 0 :(得分:1)
在不同的表/类上复制相同的结构很少是一个好主意(table-per-concrete-class会减少代码重复)。与鉴别器的备用数据库关系是父表应该合并的信号。
因此,提取像Person
或Contact
这样的公共超类并将Emails
连接到该类可能是有意义的。