Модель сохраняющегося домена с списком перечислений, не работающих в GORM / Grails - PullRequest
1 голос
/ 08 февраля 2012

В моей модели должно быть несколько перечислений одного типа:

class Broker {

    static constraints = {
        brokerTypes(nullable:false)
    }

    List<BrokerType> brokerTypes
}

Модель создается с помощью параметров из запроса, в котором содержится список типов Broker:

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 как ноль.

Нужно ли мне как-то создать отображение, чтобы GORM распознал список? Альтернативой взлома было бы вместо сохранения списка перечислений сохранить список строк или чего-то еще, а затем при необходимости отобразить обратно на перечисление, но это не кажется чистым

1 Ответ

3 голосов
/ 08 февраля 2012

Вы должны будете использовать предложение hasMany, чтобы grails / gorm инициализировал отношение один ко многим

Вы должны добавить следующий фрагмент в свой класс домена.

   static hasMany = [brokerTypes : BrokerType]
...