Java grails中每个类的InheritanceType.TABLE_的等价物?
我想为3个域类创建3个单独的表:A、B扩展A、C扩展B 但我希望他们的桌子不相互连接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
在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)