我有一个类似于以下内容的域类:
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
时,列表为空。我测试了代码,似乎没问题。该列表是否可以延迟加载?
答案 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
}
}
似乎如果一个集合是持久性的,它必须以这种方式声明,或者用其他方法映射;我不确定那些其他方法是什么。