Grails 2.5.0 - 无法创建数据并将其链接到服务中的另一个对象

标签 grails grails-orm

以下代码在 Grails 服务中引发错误:

def mydata = new MyData([data: data]).save()
user1.addToData(mydata).save()
user2.addToSecondData(mydata).save()

我收到以下错误:
NULL not allowed for column "MYDATA_ID"

如果我在第一行刷新保存,则此代码在 Controller 中运行良好。不过,我希望在服务中使用它,以便以事务方式保存它。我该如何解决这个问题?

编辑:

以下是这两个类的要点:
class User { 
... 
static hasMany = [data: MyData, secondData: MyData] 
... 
}

class MyData { 
... 
static belongsTo = User
static hasMany = [for: User]
...
}

编辑2:

我找到了一种解决方法,虽然它非常hackish,而且更优雅的解决方案会更好。我不知道它为什么起作用,但是将 User hasMany 更改为 static hasMany = [data: MyData, secondData: MyData, dummyData: MyData]解决问题。

最佳答案

我想说,你正面临着几个 hasMany 的 GORM 陷阱。同类型。默认情况下,GORM 无法解决它们,需要朝正确的方向插入。

ref-doc on mappedBy详情:

所以,在你的情况下,你必须添加

class User { 
  ... 
  static hasMany = [data: MyData, secondData: MyData] 
  static mappedBy = [ data:'data', secondData:'secondData' ]
  ... 
}

关于Grails 2.5.0 - 无法创建数据并将其链接到服务中的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640973/

相关文章:

grails - 在Grails中的投影

grails - 我可以创建自己的脚手架资源吗,即添加演示文稿模型的目的 'controller'

grails - 在 Controller grails 中渲染

grails - 如何在HQL/GORM中表达 "where value is in dynamic list"?

grails - 重构 Grails 命令验证

python - 从Grails 3启动python脚本

grails - GORM 阻止为域创建外键约束

grails - 为什么我的 GORM 对象没有保存到数据库中?

Grails hasMany 关联未保存到连接表

security - GORM 的这个实现目前不支持基于字符串的查询,如 [executeQuery]