mysql - 如何处理 Grails/GORM 中破裂的关系?

标签 mysql hibernate grails grails-orm

我有一个 grails 2.4.3 应用程序要访问一个旧的、有完整性问题的数据的硬皮数据库。

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

问题是,如何“忍受”?

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

目前,当我访问关系破裂的 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。

最佳答案

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

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

关于mysql - 如何处理 Grails/GORM 中破裂的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25839782/

相关文章:

grails - Grails g:paginate标记和自定义URL

php - 如何将变量值存储到mysql数据库中

php - 从 Mysql 转移到 PDO

mysql查询选择键并插入

php - 基于MySQL和PHP的统计

java - 多对多映射 Hibernate 出现 ConstraintViolationException

带有 Spring Boot 自动配置的 Grails 3

sorting - grails:在域类中测试 'sort' 映射

java - Spring Data和@Transactional在多次保存时不回滚

java - hibernate validator : Using if - else kind of logic in annotation