Отображение перечислений в базу данных в Grails - PullRequest
1 голос
/ 19 декабря 2010

В моем приложении grails используется много перечислений, но текущее решение GORM для перечислений не очень удовлетворительно, поскольку подразумевает, что данные находятся в коде, поскольку GORM не отображает перечисления в базу данных.

Ранее мы использовали большую таблицу, содержащую различные типы перечислений, например: выбор округа и города в одной таблице. Следовательно, таблица в базе данных будет содержать 3 столбца: тип перечисления (округ или город), идентификатор и имя (округ или город).

Сейчас я хотел бы переключить их на настоящие перечисления, но с GORM это кажется маловероятным. Я пытался сделать это с переходными процессами в классе домена, но AFAIK все еще требует, чтобы у вас уже был статический enum для класса, на который можно ссылаться.

Я полностью потерян здесь, кто-нибудь может намекнуть мне, откуда или какую функцию я мог бы получить, что хотел?

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Проще говоря, не используйте Enums для данных, которые не являются статичными и вряд ли изменятся.Вместо этого используйте обычные доменные классы и загрузите необходимые данные.

0 голосов
/ 19 декабря 2010

Может быть, этот код - то, что вы хотите:

enum UserOrderState
{
    WAITCHECK("Ожидает проверки"),
    INWORK("Выполняется"),
    DONE("Выполнен"),
    CANCELED("Отменен"),
    NOPRODUCT("Нет в наличии")

    String name

    UserOrderState(String name)
    {
        this.name = name
    }

    static list()
    {
        [ WAITCHECK, INWORK, DONE, CANCELED, NOPRODUCT ]
    }
}

Тогда в .gsp вы можете сделать комбобокс следующим образом:

<g:select 
    name="state" 
    from="${internetshop.UserOrderState.list()}" 
    value="${fieldValue(bean: order, field: 'state')}" 
    optionValue="name" 
/>
...