这很奇怪。
class Service implements Serializable{
Integer id
String serviceName
String description
SortedSet serviceRequirements
static hasMany = [ serviceRequirements : ServiceRequirement]
static mapping =
{
table 'service'
columns {
id column:'serviceId'
}
}}
访问serviceInstance.serviceRequirements时产生的hibernate sql是:
servicereq0_.serviceId as serviceId1_,
servicereq0_.serviceRequirementId as serviceR1_1_,
servicereq0_.serviceRequirementId as serviceR1_9_0_,
servicereq0_.version as version9_0_,
servicereq0_.description as descript3_9_0_,
servicereq0_.header as header9_0_,
servicereq0_.isPersonal as isPersonal9_0_,
servicereq0_.requirementKey as requirem6_9_0_,
servicereq0_.required as required9_0_,
servicereq0_.serviceId as serviceId9_0_,
servicereq0_.type as type9_0_,
servicereq0_.weight as weight9_0_,
servicereq0_.oauthAccessTokenUrl as oauthAc12_9_0_,
servicereq0_.oauthAuthorizeAdditionalParameters as oauthAu13_9_0_,
servicereq0_.oauthAuthorizeState as oauthAu14_9_0_,
servicereq0_.oauthAuthorizeUrl as oauthAu15_9_0_,
servicereq0_.oauthClientId as oauthCl16_9_0_,
servicereq0_.oauthClientSecret as oauthCl17_9_0_,
servicereq0_.oauthRequestTokenUrl as oauthRe18_9_0_,
servicereq0_.oauthType as oauthType9_0_,
servicereq0_.class as class9_0_
除最后一个“课程”外,所有字段都可以。它在数据库或名为ServiceRequirement的域类中根本不存在。
答案 0 :(得分:1)
名为class
的列在存储多个类时会自动添加到表中。如果ServiceRequirement
类的子类也是域类,那么该表将需要class
列来了解它是什么类型的ServiceRequirement
。如果设置了dbCreate
,Grails通常足够自动添加列,但如果您手动管理架构,则需要自己添加。