【问题标题】:How to cope with broken relationships in Grails/GORM?如何处理 Grails/GORM 中破裂的关系?
【发布时间】:2014-11-08 11:48:16
【问题描述】:

我有一个 grails 2.4.3 应用程序要访问一个旧的、易损坏的数据库,其中的数据完整性有问题。

随着时间的推移,各种破裂的关系已经建立起来......不知道为什么,我/拥有组织准备说“这只是生活/历史,我们会忍受它。”

问题是,如何“忍受它”?

具体来说:如何在 Grails/GORM 中处理这些破碎的关系?

目前,当我访问一个关系中断的 Note 实例时,我得到一个异常:

Caused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [Contract#292]

我可能会像这样飞溅测试:

Contract.exists(note.contract_id)

在我的整个代码中,但是...YUK!这将成为一项大规模的练习:在使用之前检查每一个关系将是可怕的。

有没有更好的方法?一种让我的代码既干燥又更健壮的方法?

这不是 GORM/Hibernate/ORM 特定的问题,但我想知道框架是否会提供任何帮助解决此问题。

关系大多被标记为可空:true。

我的数据库是 mysql/innodb。

【问题讨论】:

    标签: mysql hibernate grails grails-orm


    【解决方案1】:

    您可以在关系的映射块中指定ignoreNotFound: true

    http://grails.org/doc/latest/ref/Database%20Mapping/ignoreNotFound.html

    【讨论】:

    • 我从来没有注意到这个映射!
    • 是的,它是隐藏的,但它是处理遗留数据库的瑰宝!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多