Search code examples
grailsgrails-orm

Grails - List of Long not getting saved


I have a domain class similar to the following:

class Record {

  Long id

  List numbers = []

  String description

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

}

Then I defined a Web service similar to the code below:

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)
    }
  }

}

However, the numbers on the list don't seem to get saved, because when I retrieve a Record, the list empty. I have test for the code and it seems ok. Could it also be that the list is lazily loaded?


Solution

  • So based on this answer from a previous StackOverflow question, I updated the code as follows:

    class Record {
    
      static hasMany = [numbers: Long]
    
      Long id
    
      String description
    
      void recordNumber(Long number) {
        //requirements, validations, etc.
        addToNumbers number
      }
    
    }
    

    It would seem that if a collection is meant to be persistent, it has to be declared this way, or be mapped in some other methods; I'm just not sure what those other methods are.