Как обеспечить целостность данных при использовании таблиц на подкласс?

Я используютаблица на подкласс стратегия в Grails, установивtablePerHierarchy свойство статикиmapping поле в моем суперклассе ложно. Таким образом, Grails создает одну таблицу для моего суперкласса и одну дополнительную таблицу для каждого из моих подклассов.

Однако, хотя записи суперкласса и подкласса имеют один и тот же идентификатор (первичный ключ), нет ограничений внешнего ключа, чтобы поддерживать их согласованность, т. Е. Запись суперкласса можно удалить, оставив запись подкласса в недопустимом состоянии. Я хочу знать, есть ли параметр / свойство, чтобы GORM решал эту проблему каким-либо образом, например через ограничения. Или я могу добавить внешние ключи вручную?

Например, в качестве суперкласса указан следующий класс домена:

class Product {
    String productCode

    static mapping = {
        tablePerHierarchy false
    }
}

И следующий класс домена в качестве подкласса:

class Book extends Product {
    String isbn
}

Это приводит к созданию двух таблиц,Product стол иBook Таблица. При создании книги - например, через скаффолдинговые страницы - в каждую таблицу вставляется запись, единственной ссылкой которой является тот факт, что значение идентификатора одинаково для каждой. В частности, данные могут выглядеть так:

PRODUCT
Id      Version     ProductCode
1       1           BLAH-02X1

BOOK
Id      ISBN
1       123-4-56-7891011-1

Поскольку для этих таблиц не определено формальное отношение на уровне базы данных, можно удалить одну из записей и оставить другую, что приведет к неверным данным. Очевидно, что я могу использовать SQL, чтобы вручную создать ограничение внешнего ключа для двух полей ID, но я надеялся, что Grails справится с этим. Это возможно?

Использование Grails 2.2.1

Ответы на вопрос(2)

Ваш ответ на вопрос