Grails数据源“无法添加或更新子行:外键约束失败”

时间:2012-03-31 02:21:53

标签: hibernate grails datasource

我在我的应用程序中使用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很新,并且无法在其他任何地方找到解决此特定问题的解决方案,如果这听起来像一个愚蠢的问题,那就很抱歉

1 个答案:

答案 0 :(得分:1)

该插件不支持跨数据库的此类关系。 GORM可能不知道其他域类存在于另一个数据库中。

解决此错误的方法是存储对父行的引用,如:

class Child{
      long parentId      
      Parent getParent(){
           Parent.get( parentId )
      }
}

请参阅:http://markmail.org/message/omllq46sn3d2l6ah