我有两个对象,CarOffer和Car。 CarOffer由各种属性组成,其中一个属性引用Car。换句话说,我可以有多个CarOffers,也可以有多个Car,但是每个CarOffer只能有一个,只有一个Car。一辆汽车可以同时存在多个CarOffers中。删除CarOffer不应删除其引用的汽车,并且除非已删除所有引用Car的CarOffers,否则不能删除Car。
通常,我只是将carId属性添加到CarOffer,但是从gorm文档中,我觉得我应该使用Gorm的功能将Car Object添加到CarOffer,而不仅仅是其id。
但是我有点迷茫,我觉得“属于”或“没有”都没有真正映射到我想要的东西。
此外,我将如何创建一个新的CarOffer?
我希望能够做到
new CarOffer(carId: 123).save()
但是我觉得我必须这样做:
new CarOffer(car: Car.get(123)).save()
这不会创建一个额外的请求吗?
最佳答案
I feel neither 'belongsTo' nor 'hasOne' really map to what I want.
您不需要
belongsTo
,因为这将导致删除操作级联,并且您表示不希望这样做(“删除CarOffer不应删除其引用的汽车”)。您是否可以使用
hasOne
,这将影响其中有外键的表。如果您不想使用
carId
方法,则可以执行以下操作:class CarOffer {
String attribute1
int attribute 2
// etc...
Car car
}
class Car {
String attribute1
// etc...
// There could be, but does not need to be
// any mention of CarOffer in this class
}
...how would I go to create a new CarOffer?
这取决于您尚未提及的应用程序中的细节,但是您可以执行以下操作...
Car c = // ...
CarOffer co = new CarOffer(attribute1: 'something', attribute2: 2112, car: c)
关于grails - Gorm:对象映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56926760/