Grails GORM映射尝试访问无处存在的字段“class”

时间:2011-09-13 13:02:20

标签: hibernate grails groovy gorm

这很奇怪。

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的域类中根本不存在。

1 个答案:

答案 0 :(得分:1)

名为class的列在存储多个类时会自动添加到表中。如果ServiceRequirement类的子类也是域类,那么该表将需要class列来了解它是什么类型的ServiceRequirement。如果设置了dbCreate,Grails通常足够自动添加列,但如果您手动管理架构,则需要自己添加。