¿Cómo garantizar la integridad de los datos cuando se utiliza la tabla por subclase?

Estoy usando eltabla por subclase estrategia en Grails mediante el establecimiento de latablePerHierarchy propiedad de la estáticamapping campo en mi superclase a falso. De esta manera, Grails crea una tabla para mi superclase y una tabla adicional para cada una de mis subclases.

Sin embargo, aunque los registros de superclase y subclase comparten la misma ID (clave principal), no hay restricciones de clave externa para mantenerlos consistentes, es decir, es posible eliminar el registro de superclase, dejando el registro de subclase en un estado no válido. Quiero saber si hay una configuración / propiedad para hacer que GORM aborde esto de alguna manera, por ejemplo. a través de restricciones. ¿O es mi única opción para agregar claves externas manualmente?

Por ejemplo, dada la siguiente clase de dominio como superclase:

class Product {
    String productCode

    static mapping = {
        tablePerHierarchy false
    }
}

Y la siguiente clase de dominio como subclase:

class Book extends Product {
    String isbn
}

Esto da lugar a la creación de dos tablas, laProduct mesa y elBook mesa. Al crear un Libro, por ejemplo, a través de páginas con andamios, se inserta un registro en cada tabla, y su único vínculo es el hecho de que el valor de ID es el mismo para cada una. Específicamente, los datos podrían verse así:

PRODUCT
Id      Version     ProductCode
1       1           BLAH-02X1

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

Debido a que no hay una relación formal definida en el nivel de la base de datos para estas tablas, es posible eliminar uno de los registros y dejar el otro, lo que resulta en datos no válidos. Obviamente, puedo usar SQL para crear manualmente una restricción de clave foránea en los dos campos de ID, pero esperaba que Grails se encargara de eso. es posible?

Usando Grails 2.2.1

Respuestas a la pregunta(2)

Su respuesta a la pregunta