Grails - Long未保存的列表

时间:2014-06-30 13:57:11

标签: grails gorm

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

class Record {

  Long id

  List numbers = []

  String description

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

}

然后我定义了一个类似于以下代码的Web服务:

class RecordController extends RestfulController {

  def recordNumber(Record record) {
    def number = getNumberFromRequest() //request.JSON, request.XML, etc.
    if (record) {
      record.recordNumber(number)
      record.save(flush: true, failOnError: true)
    }
  }

}

但是,列表中的数字似乎没有保存,因为当我检索Record时,列表为空。我测试了代码,似乎没问题。该列表是否可以延迟加载?

2 个答案:

答案 0 :(得分:0)

每次调用操作时,您都要保存一个新的record实例。您应该将其从DB中加载出来:

def recordNumber( Long id ){
  def record = Record.get id
  def number = getNumberFromRequest() //request.JSON, request.XML, etc.
  //....
}

答案 1 :(得分:0)

所以基于this answer from a previous StackOverflow question,我更新了代码如下:

class Record {

  static hasMany = [numbers: Long]

  Long id

  String description

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

}

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