Grails 禁用从从属到所有者的级联

Grails 禁用从从属到所有者的级联,grails,gorm,cascade,Grails,Gorm,Cascade,在本例中,我遇到了从从属图书到库级联到所有者对象的保存问题 我有两个类似的域: Library { String name static hasMany = [ books: Book] } Book { static belongsTo = [ library: Library] } 我平静地接近它们 现在假设有两个库: id:1,名称:library1 id:2,姓名:library2 我有一本属于一号图书馆的书。我是这样理解的: GET /book/1 response:

在本例中,我遇到了从从属图书到库级联到所有者对象的保存问题

我有两个类似的域:

Library {
  String name

  static hasMany = [ books: Book]
}

Book {
  static belongsTo = [ library: Library]
}
我平静地接近它们

现在假设有两个库:

id:1,名称:library1 id:2,姓名:library2 我有一本属于一号图书馆的书。我是这样理解的:

GET /book/1
response: {
  id: 1,
  library: {
    id: 1,
    name: "library1"
  }
}
然后有人更新了图书记录,把它分配到另一个图书馆

PUT /book/1
request body: {
  id: 1,
  library: {
    id: 2,
    name: "library1"
  }
}
然后它将id为2的库重命名为library1

id:1,名称:library1 id:2,名称:library1 我希望它只从请求中获取库的id,并更新图书记录的library\u id字段


我该怎么办?

既然要修改Grails脚手架中REST功能的默认行为,就需要实现自己的控制器来处理这个问题


我建议您查看现有脚手架创建的内容,并根据您的需要对其进行修改。在编写任何进一步的代码之前,最好先阅读“是”,我知道有很多,但这也会为您节省大量工作。

不要在更新请求中发布库的名称。只需包含id。否则您将不得不编写自己的实现来处理这种情况。@Joshuamore我只是在编写API。我无法控制API用户以这种或那种方式进行操作,我必须手动处理。它是否在某个地方写下了必须在控制器端实现此解决方案,或者?是的,您必须实现自己的控制器来处理此问题。我建议您查看现有脚手架创建的内容,并根据您的需要对其进行修改。在编写任何进一步的代码之前,最好先阅读Grails文档是的,我知道有很多,但这也会为您节省很多工作。@Joshuamore只需添加一个响应,这样我就可以接受并关闭它了