grails - Gorm:对象映射

标签 grails groovy gorm

我有两个对象,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/

相关文章:

grails - 默认情况下如何使Grails 3使用复数路由

grails - 如何在 Grails 集成测试中部分模拟服务

groovy - 如何在自定义类中使用构建脚本依赖项?

grails - 在Grails 2.0中使用多个数据源定义唯一约束

grails - GORM/Grails::是否可以基于模型中List的内容进行查询?

grails - Grails创建例程

macos - 使用TextMate打开Grails项目

Groovy - 使用迭代器添加映射条目

java - Eclipse Oxygen/Neon 和 groovy - 这可能吗?

grails - Grails:联接不相关表的最佳方法是什么?