我有两个对象,CarOffer和Car。 CarOffer由各种属性组成,其中一个属性引用Car。换句话说,我可以有多个CarOffers,也可以有多个Car,但是每个CarOffer只能有一个,只有一个Car。一辆汽车可以同时存在于多个CarOffers中。删除CarOffer不应删除其引用的汽车,并且除非已删除所有引用Car的CarOffers,否则不能删除Car。
通常,我只是将carId属性添加到CarOffer中,但是从gorm文档中,我觉得我应该利用Gorm的功能将Car Object添加到CarOffer中,而不仅仅是其id。
但是我有点迷茫,我觉得'belongsTo'和'hasOne'都没有真正映射到我想要的东西。
此外,我将如何创建一个新的CarOffer? 我希望能够做到
new CarOffer(carId: 123).save()
但是我觉得我必须这样做:
new CarOffer(car: Car.get(123)).save()
这不会创建一个额外的请求吗?
答案 0 :(得分:0)
我觉得'belongsTo'和'hasOne'都没有真正映射到我想要的东西。
您不希望使用belongsTo
,因为那样会导致级联删除操作,并且您说过您不希望这样做(“删除行车者不应该删除其所引用的汽车”)。
您是否可以使用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
}
...我将如何创建一个新的CarOffer?
这取决于您尚未提及的应用程序中的详细信息,但是您可以执行以下操作...
Car c = // ...
CarOffer co = new CarOffer(attribute1: 'something', attribute2: 2112, car: c)