2011-09-13 8 views
1

これはかなり変です。Grails GORMマッピングはどこにも存在しない "class"フィールドにアクセスしようとします

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へのアクセスがある結果の休止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_ 

すべてのフィールドは、最後の "クラス" を除いてOKです。これはデータベースやServiceRequirementというドメインクラスにはまったく存在しません。

+0

ServiceRequirementクラスコードも表示できますか? –

+0

無関係 - Grailsが自動的に生成するので、 'id'フィールドを(マッピングブロックでカスタマイズしたい場合でも)指定する必要はありません。とにかく名前が何であろうとも、テーブル名マッピングを省略することもできます。 –

答えて

1

複数のクラスを格納すると、classという名前の列がテーブルに自動的に追加されます。 ServiceRequirementクラスにドメインクラスでもあるサブクラスがある場合、ServiceRequirementの種類を知るには、テーブルにclassという列が必要です。 Grailsは通常、dbCreateが設定されている場合は自動的に列を追加するほどスマートですが、手動でスキーマを管理する場合は、それを自分で追加する必要があります。

+0

ありがとう、私はこれを試してみます。そして、はい、私はgrailsにテーブルを生成させないようにしていました。物をクラス名でマップする奇妙な方法のようです... –

関連する問題