Grails GORM继承与GSP

Grails GORM继承与GSP,grails,gorm,gsp,Grails,Gorm,Gsp,嗨,我正在用Grails做一个应用程序。 它是一个用于管理发票的应用程序。 每张发票都有一份产品清单。 每个产品可以是具有不同特性的3种类型之一。 所以,我做了这个模型 class Invoice{ static hasMany = [products: Product] } abstract class Product{ static belongsTo = [invoice: Invoice] abstract int getPrice() } class Pr

嗨,我正在用Grails做一个应用程序。 它是一个用于管理发票的应用程序。 每张发票都有一份产品清单。 每个产品可以是具有不同特性的3种类型之一。 所以,我做了这个模型

class Invoice{
     static hasMany = [products: Product]
}

abstract class Product{
    static belongsTo = [invoice: Invoice]
    abstract int getPrice()
}

class ProductA extends Product{
     //implementation of getPrice using its own properties
}
现在我不知道如何从普惠制的角度来管理它

我知道Grails使用一个类列来管理继承,所以,当我编写一个表单来添加产品时,我应该还要管理这个类输入吗

大概是这样的:

 <g:textField name="products[0].class" value="ProductA" />

我对Grails很陌生,我了解Spring,但我不知道如何管理它,每个建议都很好。
非常感谢。

产品不必属于发票。从发票到产品,一个方法有很多关系就足够了。而且您根本不需要拥有基类,也不需要为产品类扩展类模型。您可以添加一个
String productType 您可以使用g.select来定义产品类型,并在表单提交时使用产品名称和类型来绑定它或创建新的域对象并保存它

new Product(params).save()

问题是,对于不同的productType,我有不同的字段和计算价格的不同方法……我是否必须用所有这些字段创建一个大类?好的,那么可以使用productType,而不是productType类中的字符串productType。这样,您就有了一个名为ProductType的类,在该类中可以有一个列表字段,也可以只有列表字段
new Product(params).save()