Grails-长时间未保存的列表

Grails-长时间未保存的列表,grails,gorm,Grails,Gorm,我有一个类似于以下内容的域类: class Record { Long id List numbers = [] String description void recordNumber(Long number) { //requirements, validations, etc. numbers << number } } 但是,列表上的数字似乎没有保存,因为当我检索记录时,列表是空的。我对代码进行了测试,看起来还可以。也可能是列表

我有一个类似于以下内容的域类:

class Record {

  Long id

  List numbers = []

  String description

  void recordNumber(Long number) {
    //requirements, validations, etc.
    numbers << number
  }

}
但是,列表上的数字似乎没有保存,因为当我检索记录时,列表是空的。我对代码进行了测试,看起来还可以。也可能是列表是延迟加载的吗?

每次调用该操作时,您都会保存一个新的记录实例。您应该将其从数据库中加载:

def recordNumber( Long id ){
  def record = Record.get id
  def number = getNumberFromRequest() //request.JSON, request.XML, etc.
  //....
}
因此,基于此,我将代码更新如下:

class Record {

  static hasMany = [numbers: Long]

  Long id

  String description

  void recordNumber(Long number) {
    //requirements, validations, etc.
    addToNumbers number
  }

}

似乎如果一个集合是持久的,就必须以这种方式声明它,或者用其他方法映射它;我只是不确定那些其他方法是什么。

根据我对官方文档的理解,当您将关联域类的实例设置为参数时,RestfulController会自动检索该实例;这似乎对我的单元测试有效。检索记录GET的代码使用相同的模式,我得到一个id正确但列表为空的模式。无论如何,我会尝试这样做,看看它是否有效。我查看了我的代码,实际上我用它来更新而不是recordNumberRecord记录,但它仍然不起作用。打印记录。错误查看可能的问题您真的需要列表吗?据我所知,每次保存时都必须刷新列表的条目,以更新列表索引列。如果对您来说不是问题,请尝试使用Set。我已将集合类型更改为Set,但仍然遇到相同的问题。
class Record {

  static hasMany = [numbers: Long]

  Long id

  String description

  void recordNumber(Long number) {
    //requirements, validations, etc.
    addToNumbers number
  }

}