2010-02-17 3 views
2

Согласно the Grails GORM guide, подклассы классов домена имеют одну и ту же таблицу, что и родительский класс, если для параметра tablePerHierarchy установлено значение false.TablePerHierarchy всегда false для абстрактных классов?

Я не могу найти информацию о том, игнорировали следующее утверждение отображения из-за «абстрактным» ключевым словом

abstract class Item implements Comparable{ 
    static mapping = { 
    tablePerHierarchy true 
    } 
... 

Моей база данных не содержит таблицы предмета, и один стола в подкласс (ожидается состояние для tablePerHierarchy == лжи).

Должен ли я сделать предмет конкретным, но запретить его в валидации? Я планирую иметь один элемент ItemController с выбранными подклассами, используя <. Выберите > в форме создания.

ответ

4

Я уверен, что вы пришли к некоторому решению этого уже, но я столкнулся с той же проблемой сегодня, поэтому я думал, что перезвон в.

В документации Grails/Gorm, раздел 5.2. 3, он утверждает, что «GORM поддерживает наследование как от абстрактных базовых классов, так и от конкретных постоянных объектов GORM» (http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html).

Интересно, что они не приводят пример абстрактного класса в примере для этого раздела.

Я пробовал, имея абстрактный класс в своей иерархии (как в верхней части иерархии, так и дальше по одной из ветвей). Каждый раз, когда я пытался сохранить объект, являющийся подклассом чего-либо абстрактного, я молчал.

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

Итак, на мой вывод, на практике неверно, что вы можете использовать ключевое слово abstract в иерархии Gorm.

Так моя планируется иерархия в том, что в некоторых простых типов данных, например: абстрактный тип < - бетон Текст < - бетон Url абстрактный тип < - абстрактные Числовой < - бетон Integral абстрактный тип < - абстрактные Числовой < - бетонными Десятичный

бы стать: бетон Тип < - бетон Текст < - бетон Url бетон Тип < - бетон Числовой < - бетонную Integra l бетон Тип < - бетон Числовые < - бетон Десятичный

, хотя я не собираюсь создавать экземпляры Type или Numeric напрямую.

Для раскрытия информации я все еще использую Grails 1.1.2, пока не почувствую, что уровень 1.2 достаточно стабилен.