Grails Domain Design:继承还是一个具有可空属性的类?

时间:2015-03-31 04:14:32

标签: grails inheritance gorm

我有一个域 OrderItem

class OrderItem {
    Product product
    Packaging packaging
    //other details
}

class Product {
 //other details
}

class Packaging {
//other details
}

目前,OrderItem仅指啤酒。产品是啤酒的类型。包装是罐头/瓶子/桶/等。

然后客户决定也销售不是啤酒的商品:烈酒,原料,纪念品等。

我认为这些都是OrderItem对象,但系统当前将OrderItem视为Beers。我该如何介绍扩展模型? (注意:有些新产品没有产品,包装或两者兼而有之。)

  1. 继承?仍然只将OrderItem视为啤酒。然后,所有新项目都将拥有自己的扩展OrderItem的类。优点和缺点?每个层次结构或每个类的表?
  2. 向OrderItem添加属性(有些可以为空)以区分新项目?比如'category','someItemCode','someItemPricing'等等。

1 个答案:

答案 0 :(得分:0)

我更喜欢第二个,添加其他属性,如categoryitemType

因此,在添加新字段时,您的迁移脚本必须为所有现有记录将itemType字段值设置为Beers(因为您拥有的所有产品都是Beers)。

我不知道您的哪个字段将是null,但如果您的OrderItem表格仍有许多nullable列,则需要对其进行规范化。

相关问题