2016-11-15 15 views
0

私は単純なドメインオブジェクトを持っています。GrailsのGORM結合フィールドを2回

class Product { 

    public static final String TRACE_SKU="236" 

    Integer xRefId 

    static constraints = { 
     xRefId(nullable:true) 
    } 

    static mapping = { 
     table 'product' 
     version false 
     id generator:'identity', column:'id' 
     xRefId column:'xref_id' 
     cache usage: 'nonstrict-read-write' 
    } 

} 

アプリケーション起動時とテストケースの実行時に次のエラーが発生します。

Repeated column in mapping for entity: com.appdroplet.tricor.common.domain.product.Product column: xref_id (should be mapped with insert="false" update="false") 

また、エラーログを調べると、このメッセージが表示されます。

[ 15.11.16 09:34:50.403] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] Mapping Grails domain class: com.appdroplet.tricor.common.domain.product.Product -> product 
[ 15.11.16 09:34:50.403] [main] [DEBUG] [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory] Returning cached instance of singleton bean 'orgGrailsBeansConstraintsEvaluator' 
[ 15.11.16 09:34:50.405] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] bound property [id] to column name [id] in table [product] 
[ 15.11.16 09:34:50.405] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] Binding persistent property [XRefId] 
[ 15.11.16 09:34:50.405] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] Binding property [XRefId] as SimpleValue 
[ 15.11.16 09:34:50.407] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] bound property [XRefId] to column name [xref_id] in table [product] 
[ 15.11.16 09:34:50.407] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] Binding persistent property [xRefId] 
[ 15.11.16 09:34:50.407] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] Binding property [xRefId] as SimpleValue 
[ 15.11.16 09:34:50.407] [main] [DEBUG] [org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder] [GrailsDomainBinder] bound property [xRefId] to column name [xref_id] in table [product] 

何らかの理由でGrailsが同じプロパティを2回バインドしています。

プロジェクトではGrails 2.3.0を使用しています。

+0

にGORMについての詳細を学ぶことができますか? – injecteer

+0

マッピングではエラーは発生しませんが、テーブル[製品]の[バインドされたプロパティ[XRefId]とテーブル[製品]のバインドされたプロパティ[xref_id]、テーブル[product]のバインドされたプロパティ[xRefId]〜カラム名[x_ref_id] ] ' – mfleshman

+0

フィールドの名前を 'xrefId'に変更するのは問題ですか? – injecteer

答えて

0

IDで終了することはできません。 Grailsの規則によって

Book { 
    Author author 
} 

book.authorId次のクラスを持つ

は、プロパティの作者のIDを取得したいということを意味します。他の用途ではエラーが発生する可能性があります。

ブックテーブルの著者は、デフォルトではauthor_idとしてマップされます。 「xref_id'`:

あなたは `xRefId列を削除するとどうなるかそのdocumentation

+0

ありがとう、これはどこかで文書化されていますか? – mfleshman

+0

私はドキュメントのURLを追加しました。grailsのドキュメント – quindimildev

+0

が書かれているかわかりませんが、見つけようとしています。 – quindimildev

関連する問題