2013-11-15 2 views
2

Я использую наследование в классах домена в своем приложении Grails. Очевидно, что наследование добавляет столбец «класс» в мою базу данных. Содержимое столбца «класс» - это полное имя класса домена, например. com.myapp.MyClass.Наследование класса домена Grails: настройка столбца класса

Теперь, если я когда-либо делал рефакторинг и имя класса больше не com.myapp.MyClass, но, например, com.myapp.mypackage.MyClass, то база данных по-прежнему содержит старое имя класса, которое теперь больше не существует в приложении.

Есть ли способ настроить строку, помещенную в столбец «класс»? Как другой уникальный идентификатор для класса, который затем отображается на имя класса в моей конфигурации Grails или что-то вроде этого?

ответ

1

Я думаю, что вам нужен дискриминатор для класса.

По умолчанию при отображении наследования Grails использует модель с одной таблицей , где все классы имеют одну и ту же таблицу. Столбец дискриминатора используется , чтобы определить тип для каждой строки, по умолчанию полное имя класса. ref

Вы можете отобразить это следующим образом:

class PodCast extends Content { 
    … 
    static mapping = { 
     discriminator "audio" 
    } 
} 

Посмотрите эту документацию, что дает вам больше возможностей, чтобы настроить его более детально

http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html

+1

Большое спасибо, это именно то, что мне нужно. Я не уверен, почему я не нашел его в документации, хотя ... :) – Warlock

Смежные вопросы