我的模型需要具有相同类型的多个枚举:
class Broker {
static constraints = {
brokerTypes(nullable:false)
}
List<BrokerType> brokerTypes
}
正在使用来自请求的参数实例化该模型,该模型中包含一个BrokerTypes列表:
def save(){
def brokerInstance = new Broker(newParams)
System.out.println(brokerInstance.getBrokerTypes().toString());
if (!brokerInstance.save(flush: true)) {
render(view: "create", model: [brokerInstance: brokerInstance])
return
}
redirect(action: "show", id: brokerInstance.id)
}
println按预期打印出BrokerTypes列表,因此我知道它存在于实例中。稍后,按以下方式检索模型:
def brokerInstance = Broker.findByLatAndLon(lat,lon)
System.out.println(brokerInstance.getBrokerTypes().toString());
这次,println打印出“null”
所以我想问题是GORM不知道如何存储此枚举列表,而是当调用brokerInstance.save()时,它将brokerTypes字段保存为null。
我是否需要以某种方式创建映射以使GORM识别该列表? hack的替代方法是代替存储枚举列表,而是存储字符串列表或其他内容,然后在需要时映射回枚举,但这似乎并不干净。
最佳答案
您将必须使用hasMany
子句,以便grails / gorm初始化一对多关系
您应将以下代码段添加到您的域类中。
static hasMany = [brokerTypes : BrokerType]