我正在使用 Grails 创建发票管理应用程序,并且遇到继承问题。
如果我的意图是每张发票都应包含一组行/项目,并且当发票格式化为打印时,项目按日期排序,按类别分成列表,然后以不同的方式计算每行的价格每种具体类型的方式(定时项目将在 rate 属性中查找每小时,定价项目在创建时分配一个价格)。
Node Invoice 有一个属性“items”,它是 Item 对象的集合。
我的域类的来源:
class Invoice {
static constraints = {
}
String client
Date dateCreated
Date lastUpdated
CostProfile rates
def relatesToMany = [items : Item]
Set items = new HashSet()
}
abstract class Item{
static constraints = {
}
String description
Date date
enum category {SERVICE,GOODS,OTHER}
def belongsTo = Invoice
Invoice invoice
}
class TimedItem extends Item{
static constraints = {
}
int minutes
}
class PricedItem extends Item{
static constraints = {
}
BigDecimal cost
BigDecimal taxrate
}
有问题的代码的来源:
invoiceInstance.items.add(new TimedItem(description:"waffle", minutes:60, date:new Date(),category:"OTHER"))
def firstList = []
def lastList = []
invoiceInstance.items.sort{it.date}
invoiceInstance.items.each(){
switch(((Item)it).category){
case "LETTER":
firstList.add(it)
break;
default:
lastList.add(it)
}
}
错误消息:
groovy.lang.MissingPropertyException:没有这样的属性:类的类别:TimedItem
Stacktrace 表示上述示例的第 6 行。