我在我的应用程序中使用Grails Datasources插件,并且存在持久引用(chidl)域类引用只读关联(父)类的问题。例如:
/* Parent domain class; a read-only datasource using the Datasources plugin */
class Parent {
//...Some fields
}
/* Child domain class, referencing the parent class */
class Child
// Some fields
static hasOne = [parent:Parent]
}
当我尝试坚持我的孩子课时,我收到了这个错误
Cannot add or update a child row: a foreign key constraint fails
(`foo`.`child`, CONSTRAINT `FK38A5EE5F707D1A2B`
FOREIGN KEY (`id`) REFERENCES `parent` (`id`))
我注意到Grails在启动时创建表时,从(只读)datasource A
到我的本地(可写)datasource B
创建了引用表的本地空副本。它可以引用这个表(及其新创建的FK)吗?如果是这样,为什么它不对实际数据源强制执行FK约束(即在datasource A
中)?
我对Grails很新,并且无法在其他任何地方找到解决此特定问题的解决方案,如果这听起来像一个愚蠢的问题,那就很抱歉
答案 0 :(得分:1)
该插件不支持跨数据库的此类关系。 GORM可能不知道其他域类存在于另一个数据库中。
解决此错误的方法是存储对父行的引用,如:
class Child{
long parentId
Parent getParent(){
Parent.get( parentId )
}
}