0

現在、Grails 2.4 プロジェクトを Grails 3.0.10 または 3.1.0.M3 に移行しています。

Grails 2.4 では、ドメイン クラスが複合主キーを備えているかどうかを検出するための回避策として、次の方法があります。

void isCompositePrimaryKey(GrailsDomainClass targetClass) {
    def binder = new GrailsDomainBinder()
    def idMapping = binder.getMapping(targetClass).identity
    return idMapping instanceof org.codehaus.groovy.grails.orm.hibernate.cfg.CompositeIdentity
}

パブリック API でこれを検出する方法が見つかりません。

GrailsDomainClass は実装ソース コードにまだ存在しますが、プロジェクトからアクセスできないようで、古い CompositeIdentity を見つけることもできません。

代替戦略は経由である可能性targetClass.getIdentifier().getType() がありますが、ID タイプを使用して複合キーを検出する方法に関するドキュメントが見つかりません。

4

1 に答える 1

0

build.gradleHibernate 4 GORM 実装パッケージに明示的な (非推移的な) 依存関係を追加するだけで、これを解決しました。

(ローカルのgradleファイルキャッシュを調べてパッケージとバージョンを特定しましたが、gradle dependenciesうまくいきました。)

に追加build.gradle:

compile 'org.grails:grails-datastore-gorm-hibernate4:5.0.0.RC2'`

これにより、内部 API へのアクセスが許可され、上記の方法は引き続き機能します。

注意。PersistentEntityGORM 開発者は、 を使用せずにおよびMappingContextクラスを介して、これに対する既存の GORM API があることもアドバイスしていGrailsDomainClassます。

于 2015-12-16T12:24:12.563 に答える