2012-02-08 17 views
1

我的模型需要有相同類型的多個枚舉:應堅持域模型W在GORM/Grails的工作不枚舉/列表

class Broker { 

    static constraints = { 
     brokerTypes(nullable:false) 
    } 

    List<BrokerType> brokerTypes 
} 

該模型被實例化從請求,其中有PARAMS在它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打印出「空」

所以我想這個問題是格姆不知道如何存儲枚舉的這份名單中,並而是調用brokerInstance.save()時,將其brokerTypes字段保存爲空。

我是否需要創建一個映射讓GORM識別列表?黑客的替代方案是代替存儲枚舉列表,存儲字符串列表或其他東西,然後在需要時映射回枚舉,但這看起來並不乾淨

+0

一切似乎都正確,必須工作。我有類似的域名 - 一切都很好。 PS另外,你可以把它寫成'println brokerInstance.brokerTypes' – 2012-02-08 11:49:12

回答

3

您將不得不使用hasMany子句grails/gorm初始化一對多關係

您應該將以下片段添加到您的域類。

static hasMany = [brokerTypes : BrokerType]