我有一个称为Provenance的域类,用于标记与其他创建方法(ETL等)相比,由应用程序创建的记录。该记录预先存在于数据库中,并且beforeInsert,beforeUpdate,beforeDelete引发RuntimeException强制将域设置为只读
SELECT COUNT(PlanId)
FROM PLANLOCATION
WHERE PLANLOCATION = LocationId
我正在测试一种保存Person(mockDomain)记录的服务方法。我曾经这样嘲笑过:
class Provenance implements Serializable {
...
static Provenance MANUAL() {
findByProvenanceType('MANUAL')
}
def beforeInsert() {
throw new RuntimeException('create not allowed')
}
...
}
迁移的主要更改是2.3.4,使用Person域的@Mock和使用3.3.8的嘲笑域。
这对于grails 2.3.4来说很好用。但是,当迁移到grails 3.3.8时,将保存的人级联到Provenance中,这将导致引发beforeInsert中的RuntimeException。
我还考虑过在Provenance上使用mockDomain并事先保存它,但是我遇到了同样的问题,因为不能重写beforeInsert来防止RuntimeException。关于为什么会在版本之间进行更改以及如何解决的任何想法?