首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gorm:对象映射

Gorm:对象映射
EN

Stack Overflow用户
提问于 2019-07-07 22:59:41
回答 1查看 127关注 0票数 0

我有两个对象,一个CarOffer和一辆汽车。CarOffer由各种属性组成,其中一个属性引用汽车。换句话说,我可以有多个CarOffers,多个汽车,但是每个CarOffer只有一辆车。一辆汽车可以出现在多个CarOffers中。删除CarOffer不应该删除它引用的car,除非引用它的所有CarOffers都已被删除,否则不应该能够删除Car。

通常,我只是向carId添加了一个CarOffer属性,但是从gorm文档中我觉得我应该使用Gorm的功能将一个Car对象添加到CarOffer中,而不是仅仅添加它的id。

然而,我有点迷失了,我觉得既不是“belongsTo”,也不是“hasOne”,而是真正想要的东西。

此外,我将如何创建一个新的CarOffer?我希望能做到

代码语言:javascript
复制
new CarOffer(carId: 123).save()

但我觉得我必须这样做:

代码语言:javascript
复制
new CarOffer(car: Car.get(123)).save()

这样就不会产生一个额外的请求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 00:44:04

我觉得“belongsTo”和“hasOne”都不是我真正想要的。

您不需要belongsTo,因为这将导致删除被级联,并且您说您不希望这样做(“删除一个CarOffer不应该删除它引用的汽车”)。

您可以使用hasOne或不使用,这将影响其中包含外键的表。

如果不想使用carId方法,可以这样做:

代码语言:javascript
复制
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我会去创建一个新的CarOffer吗?

这取决于你的应用程序中没有提到的细节,但你可以这样做.

代码语言:javascript
复制
Car c = // ...
CarOffer co = new CarOffer(attribute1: 'something', attribute2: 2112, car: c)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56926760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档