TablePerHierarchy всегда ложно для абстрактных классов? - PullRequest
2 голосов
/ 17 февраля 2010

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

Я не могу найти информацию о том, игнорируется ли следующий оператор сопоставления из-за ключевого слова "abstract"

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

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

Нужно ли делать товар конкретным, но запрещать его при проверке? Я планирую иметь один ItemController с подклассами, выбранными с помощью

1 Ответ

4 голосов
/ 05 марта 2010

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

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

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

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

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

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

Итак, моя запланированная иерархия была, например, для некоторых простых типов данных: абстрактный тип <- конкретный текст <- конкретный URL абстрактный Тип <- абстрактный Числовой <- конкретный Интеграл абстрактный Тип <- абстрактный Числовой <- конкретный Десятичный </p>

должен был стать: Тип бетона <- конкретный текст <- конкретный URL Тип бетона <- бетон Числовой <- бетон Интеграл тип бетона <- бетон числовой <- бетон десятичный </p>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...