5

私はbelongsToリレーションを含む基準ビルダーを作成しようとしましたが、まだ成功していません。次のモデルを検討してください。

class Msg {
    ...
    static belongsTo = [user: User]
    ...
}  

class User {
    ...
    Organisation organisation
    ...
}  

私は次のクエリを作成しようとしています:

Msg.createCriteria().list() {
    ...
    user {
        eq("organisation", organisationInstance)
    }
    ...
}

私が得ているのは次のエラーだけです

ERROR errors.GrailsExceptionResolver  - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [MsgService$_findMessages_closure1_closure6@afcba8]
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map)

私は、次のようなさまざまな小さな追加を基準クエリに追加しようとしました。

join "user"
fetchMode("user", org.hibernate.FetchMode.EAGER)

しかし、それでも同じ問題が発生します。

次の静的マッピングをMsgクラスに追加しようとしました。

static mapping = {
    columns {
        user lazy: false
    }
}

まだ動作していません。

属性ビルダーを含むbelongsToクエリを使用する方法はありますか?

よろしくお願いします。
ルシアン

4

2 に答える 2

7

私は解決策を見つけました!この問題は、基準ビルダーとはまったく関係がありませんでした。この例では、スコープ内にユーザー変数がありました。それを削除すると、それは魅力のように機能します:-)

于 2010-11-01T10:08:42.153 に答える
2
def criteria = Msg.createCriteria()
results = criteria.list{
    user{
        eq("organisation", organisationInstance)
    }
}
于 2010-10-29T15:03:52.550 に答える