以下代码在 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/