0

別のドメイン contactGroup に属する連絡先がある grails アプリケーションがあります。removeFromContacts メソッドを除いて、すべて正常に動作しているようです。次のコードを使用しています。コードは正しく機能しますが、グループから一度に 1 つの連絡先のみを削除します。私はいくつかのデバッグを行い、連絡先が提供した回数だけ foreach ループが実行されました。エラーメッセージはありません。何がうまくいかないのか考えてみてください -

    ContactGroup group = ContactGroup.findByIdAndOwner(params.groupId, user)

    def contactIds = request.JSON.data.contact
    contactIds.each {
        Contact contact = Contact.findByContactIdAndOwner(it.contactId, user)
        if(contact) {
            group.removeFromContacts(contact)
        }
    }
4

2 に答える 2

0

アソシエーションが「実際の」インスタンスではなく遅延ロードされる場合にプロキシをロードするfindAllメソッドについていくつか読んだことがあります。

これを試して:

    group.removeFromContacts(Contact.get(contact.id))

「get」はプロキシをバイパスし、「実際の」インスタンスを使用する必要があります。これについて話すJIRAがあります(Grails-5804)。JIRA(Burt Beckwithから)による全体的な修正は、ContactクラスにequalsおよびhashCodeメソッドを実装することです。

于 2012-05-15T15:32:18.873 に答える
0

たくさんのご支援ありがとうございます。ドメインレベルでの関係を正しく定義しておらず、それが全体を台無しにしていることに気づきました。正しく動作していることを修正したとき。

saurabh

于 2012-06-02T12:54:54.040 に答える