1

2つのドメインオブジェクトがあります

Class Attachment{
    static hasMany = [mailDrafts: MailDraft];
}

Class MailDraft{
  static hasMany = [attachments: Attachment]
   static belongsTo = Attachment
} 

3つのテーブルを作成しました

1)attachment
2)mail_draft 
3)attachment_mail_drafts

attachment_mail_drafts: id, mail_draft_id

さて、HQLクエリを書きto delete an entry from the table 'attachment_mail_drafts' where 'attachment_id' is 4たいのですが、クエリとは何ですか。

4

3 に答える 3

3

HQLではこれを行うことはできません。理由については、こちらをご覧ください。代わりに、次のようにします。

def a = Attachment.get(4)
a.mailDrafts.clear()
a.save()
于 2012-09-18T13:42:11.957 に答える
3

HQLではオブジェクトのみを削除できるようです。関連付けを削除することはできません。生のSQLを使用するか、GORMメソッドremoveFromを使用できます。

def attachment = Attachment.get(1)
def mailDraft = attachment.mailDrafts.find { it.id = 4 }
attachment.removeFromMailDrafts(mailDraft).save(flush: true)
于 2012-09-18T13:44:54.120 に答える
0

Burt Beckwith氏が説明したアプローチを使用して、hasMany / belongsTo手法を回避するm:nコレクションを実装できます。これにより、パフォーマンスが向上し、必要な「attachment_mail_drafts」エンティティを安全に削除できます

于 2012-09-18T13:21:19.870 に答える