我的gorm包中有以下域名:
Domain.groovy
package gorm
class Domain {
String createdBy
static constraints = {
}
static mapping = {
tablePerHierarchy true
}
}
User.groovy
package gorm
class User extends Domain {
String name
static constraints = {
}
}
我想要一个名为user的表,其中包含基类域的字段,但是GROM会生成一个表格,而不是此规范
create table domain
(
id bigint auto_increment
primary key,
version bigint not null,
created_by varchar(255) not null,
class varchar(255) not null,
name varchar(255) null
)
我正在使用带有grails 2.5.6的mysql驱动程序。
答案 0 :(得分:1)
它会生成名称为domain
的表格,因为您在映射中使用了tablePerHierarchy true
。
基本上,您将获得一个表,您可以在其中为子类设置不同的鉴别符。
有关继承策略的更多信息,请参阅此处:http://docs.grails.org/2.5.x/guide/single.html#GORM (向下滚动到:7.2.3 GORM中的继承)
如果您只是希望schema-export生成名为user
的表,那么您需要将以下内容添加到Domain
类的映射块中:
table 'user
“
所以整个映射块看起来像:
static mapping = {
table 'user'
tablePerHierarchy true
}
但是,如果您从user
扩展了其他类,则将表命名为Domain
可能没有意义。
(如果您不打算从Domain
扩展其他类,则只需将您的字段添加到User
域中。
如果要生成两个表格(Domain
和User
),请设置tablePerHierachy false
。
这是一篇很好的文章,其中有一些示例可以帮助您确定您希望项目的方式:
作为旁注:我不喜欢域名的Domain
名称;当你谈论特定的Domain
类和域类时,它太通用了,可能会让人感到困惑。至少将其命名为BaseDomain
。