【问题标题】:How do I prevent child properties from being updated?如何防止子属性被更新?
【发布时间】:2017-10-03 00:05:16
【问题描述】:

当我在 Grails 中使用 RestfulController 保存对象的数据时,如何防止客户端将更改应用到相关的子对象?

给定以下域类:

class Language {
    String name
}

class TranslationText {
    Language language
    String text
}

以及 TranslationText 的以下 POST 数据:

{
    "language": { "id": 1, "name": "InvalidName" },
    "text": "Some Text"
}

在这里,我想引用现有的语言资源(ID=1),但我不希望客户端更改名称。

如何使用文本和语言(基于 ID)保存此资源,但丢弃无效的语言名称属性?

我想以尽可能最小的方式修改 RestfulController,尽可能保留默认行为。

【问题讨论】:

标签: grails grails-orm grails-3.3 grails-rest-api


【解决方案1】:

我认为您需要配置“级联”映射属性。这将告诉 GORM 驱逐链接的实例,因此它不会在 Hibernate 会话中,更改为新名称并刷新到数据库:

class TranslationText {
    Language language
    String text

    static mapping = {
        language cascade: 'evict'
    }
}

参考:http://docs.grails.org/3.1.x/ref/Database%20Mapping/cascade.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多