Grails GORM:有许多相同的域类
只是想知道是否有人可以建议域类模式应该是什么。我有一个名为Category的域类,但是可以有具有相同域(Category)的子类别。例如,一台烤面包机可以归入厨房类、小家电子类Grails GORM:有许多相同的域类,grails,gorm,Grails,Gorm,只是想知道是否有人可以建议域类模式应该是什么。我有一个名为Category的域类,但是可以有具有相同域(Category)的子类别。例如,一台烤面包机可以归入厨房类、小家电子类 class Category { static hasMany = [appliances: Appliance, categories: Category] String name } class Appliance { static belongsTo = Category static
class Category {
static hasMany = [appliances: Appliance, categories: Category]
String name
}
class Appliance {
static belongsTo = Category
static hasMany = [categories: Category]
}
需要对Appliance域类进行一些小调整。猜猜看!!:) 对于
类别
,我们不需要在设备
中使用hasMany关系。这种关系是这样的:
Category --> SubCategory (type of Category) --> Appliance
设备既属于父类别
,也属于子类别
,而子类别本身又属于类别
。因此,在设备中,保持关系就足够了
改用:
class Appliance {
static belongsTo = Category
String name
}
class Category {
String name
static hasMany = [appliances: Appliance, subCategories: Category]
}
下面是一个可以让您更好地理解事物的测试用例:
//Category
def kitchen = new Category(name: "Kitchen")
kitchen.save()
//Appliance
def toaster = new Appliance(name: "Toaster")
kitchen.addToAppliances(toaster)
kitchen.save()
//Sub Categories
def electrical = new Category(name: "Electrical")
//Electrical category is a sub category of Kitchen
kitchen.addToSubCategories(electrical)
//Toaster is an appliance of Category Kitchen and Sub Category Electrical
electrical.addToAppliances(toaster)
kitchen.save()
assert kitchen
assert toaster
assert electrical
assert kitchen.appliances.size() == 1
kitchen.appliances.each{assert it.name == 'Toaster'}
assert kitchen.subCategories.size() == 1
kitchen.subCategories.each {assert it.name == 'Electrical'}
assert electrical.appliances.size() == 1
electrical.appliances.each {assert it.name == 'Toaster'}
如果仍不清楚,请告知。谢谢您的详细回答。我明白你的意思,就我的情况而言,我希望能够添加多个类别的产品,而不仅仅是一个类别。例如:厨房和小家电子类别中的烤面包机。也是电气类的烤面包机。