Java grails中每个类的InheritanceType.TABLE_的等价物?

Java grails中每个类的InheritanceType.TABLE_的等价物?,java,hibernate,grails,gorm,grails-domain-class,Java,Hibernate,Grails,Gorm,Grails Domain Class,我想为3个域类创建3个单独的表:A、B扩展A、C扩展B 但我希望他们的桌子不相互连接 在hibernate中,我会使用InheritanceType.TABLE\u PER\u类,在grails中,它的等价物是什么?尝试使用tablePerHierarchy false class Payment { Integer amount static mapping = { tablePerHierarchy false } } class CreditCar

我想为3个域类创建3个单独的表:A、B扩展A、C扩展B 但我希望他们的桌子不相互连接


在hibernate中,我会使用InheritanceType.TABLE\u PER\u类,在grails中,它的等价物是什么?

尝试使用tablePerHierarchy false

class Payment {
    Integer amount
    static mapping = {
        tablePerHierarchy false
    }
}

class CreditCardPayment extends Payment {
    String cardNumber
}

请参阅更多信息:

我也曾试图实现这一点,是的,grails也有可能实现这一点,这是一个稍微弯曲勺子以实现这一点的案例:

在Grails3下这样做

您有一个要扩展的基类,并且有具有相同字段的子表,即每个类的表:

我找到了另一篇有帮助的帖子,上面有一条评论,但现在要在这篇帖子上正确地展开和解释:

这本来是我们的基本域类,但它不是在
grails app/domains/
中创建的,而是在
src/main/groovy/test下创建的

package test

abstract class Tester {
    String name
    String something

    static mapping = {
        tablePerConcreteClass true
        id generator: 'increment'
        version false
    }
}
grails app/domains/test
中的下一个实际域类:

package  test
class Tester1 extends Tester {
}

看看mysql:

mysql> show create table tester2;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                            |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tester2 | CREATE TABLE `tester2` (
  `id` bigint(20) NOT NULL,
  `something` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table tester1;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                            |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tester1 | CREATE TABLE `tester1` (
  `id` bigint(20) NOT NULL,
  `something` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

如果我使用它,子表将不会继承父表的字段。我需要他们被继承。作为他人的参考点
mysql> show create table tester2;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                            |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tester2 | CREATE TABLE `tester2` (
  `id` bigint(20) NOT NULL,
  `something` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table tester1;
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                            |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tester1 | CREATE TABLE `tester1` (
  `id` bigint(20) NOT NULL,
  `something` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)