1

次のシナリオが Grails のバグなのか、それとも再帰的な関係を表現するために必要な別の方法があるのか​​ 疑問に思っています。

(create-app を使用して) Grails 2.1.0 アプリを作成し、以下のドメイン クラスを (create-domain-class を使用して) 作成すると、「grails run-app」で MappingException が発生します。

class Person {
    static hasMany = [neighbours:Person]

    public Person getBestFriend() {
        return null
    }
}

Caused by MappingException: Foreign key (FKC4E39B558E488775:person [])) must have same  number of columns as the referenced primary key (person [id])
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   138 | run      in java.util.concurrent.FutureTask
|   886 | runTask  in java.util.concurrent.ThreadPoolExecutor$Worker
|   908 | run      in     ''
^   662 | run . .  in java.lang.Thread

getBestFriend()戻り値の型がまたはObjectその他の型の場合、アプリケーションは正常に起動します。hasManyのPerson型を変更する場合も同様です。neighbours追加してstatic transients = ['bestFriend']も変化はありませんでした。

この例外は主に、子オブジェクトを複合キーで参照するときに検索で表示されましたが、この例のような状況は見つかりませんでした。これについて何か助けてくれてありがとう!

4

1 に答える 1

0

ここで試してみましたが、同じ問題が発生しました。1つの解決策は、名前付きクエリを使用することです。

class Person {

    static hasMany = [neighbours:Person]

    //static transients = ['bestFriend']

    //public Person getBestFriend() {
//      return null
//  }

    static namedQueries  = {
        bestFriend {
        }
    }


    static constraints = {

    }
} 
于 2012-09-27T02:41:19.057 に答える