2016-01-06 13 views
8

Grails 2.4.4では、ドメインオブジェクトのラッパーとして使用したクラスがありました。Grails 3 @Delegate表記(ドメインオブジェクトを使用)

彼らは次のようになります。

class Foo { 
    @Delegate 
    OurDomainClass ourDomainClass 
    ... 

} 

は、これは働いたが、Grailsの3.0.11の下でコンパイルしようとしたとき、私たちはこれを取得:

Foo.groovy:14:持つことはできません非抽象クラスの抽象メソッド。 'Foo'クラスは抽象宣言されなければならないか、 'org.springframework.validation.Errors org_grails_datastore_gorm_GormValidateable__errors $ get()'メソッドが実装されていなければなりません。ライン14 @ 、列1 Fooクラス{ ^

コンパイルパスを行います@Delegate注釈を削除

が、基本となるクラスのメソッドの呼び出しは、明らかに、その後は動作しません。

これを回避する方法、またはこれと同じ動作をして、Grails 3の下でコンパイルをパスする方法はありますか?

+0

私は同じ問題があります。あなたは解決策を見つけましたか? – Samoth

+0

ラッパーに '@ Validatable'を追加しようとしましたか? – injecteer

+0

grails 3.xコマンドでは、Validatableの代わりにValidatableが実装されています。... – Samoth

答えて

1

良い古いstatic hasMany = []または​​は仕事をしませんか?もちろんラッパーもドメインクラスになります。

0

あなたはGORMの特徴を実装するラッパークラスを変更することでこの問題を回避することができます

class Foo implements GormValidateable, DirtyCheckable, Validateable { 
    @Delegate 
    OurDomainClass ourDomainClass 
    ... 
} 

私はさらに行って、自分のインターフェースを作成しました:

class Foo implements GormDelegateHack { 
    @Delegate 
    OurDomainClass ourDomainClass 
    ... 
} 

interface GormDelegateHack extends GormValidateable, DirtyCheckable, Validateable { 
} 

私はGrailsのデータに対してissue #856を提出マッピングされていますが、Groovy bugです。

関連する問題