如何将多个对象添加到Groovy中的对象属性? ---在Bootstrap.groovy
问题描述:
在Grails中创建一个简单的采购订单应用程序,其中包含Category(例如:TV,Video ...),Brand和Item。品牌是相关的(hasMany)类别,例如索尼制造视频和电视。如何将多个对象添加到Groovy中的对象属性? ---在Bootstrap.groovy
里面BootStrap.groovy中,我要做到以下几点:
Brand jvc = new Brand(name:"JVC")
Brand sony = new Brand(name:"Sony")
Brand samsung = new Brand(name:"Samsung")
Category tv = new Category(name:"Television")
Category video = new Category(name:"Video")
Category laptop = new Category(name:"Laptop")
sony.categories.(tv) ----> These methods are wrong
sony.addCategory(video) ----> These methods are wrong
sony.addCategory(laptop)
如何将品牌多个类别相关联?注意我尝试了很多不同的方法模板,但都没有成功Brand类中的属性是静态的hasMany [categories:Category]。
答
当你有static hasMany = [categories:Category]
这增加了一个Set
名为categories
到你的班级,并增加了一个动态的方法addToCategories
这是做你想做的。它初始化集合,如果它为空(对于新实例将是这种情况),然后将该实例添加到集合,并且如果它是双向的,则设置反向引用。因此,那些最后三行应
sony.addToCategories(tv)
sony.addToCategories(video)
sony.addToCategories(laptop)
这在user guide和每本书上Grails的描述,因为它是映射集合的一个非常基本的功能。