我有两个域对象
Class Attachment{
static hasMany = [mailDrafts: MailDraft];
}
Class MailDraft{
static hasMany = [attachments: Attachment]
static belongsTo = Attachment
}
它创建了三个表
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
,那么查询是什么。
答案 0 :(得分:3)
你不能用HQL做到这一点,你可以阅读更多为什么here。 相反,你会做以下事情:
def a = Attachment.get(4)
a.mailDrafts.clear()
a.save()
答案 1 :(得分:3)
似乎在HQL中你只能删除对象,删除关联是不可能的。您可以使用原始SQL或使用GORM方法removeFrom:
def attachment = Attachment.get(1)
def mailDraft = attachment.mailDrafts.find { it.id = 4 }
attachment.removeFromMailDrafts(mailDraft).save(flush: true)
答案 2 :(得分:0)
你可以使用Burt Beckwith先生使用方法explained来实现m:n集合,避免使用hasMany / belongsTo技术,这样可以提高性能并帮助您安全地删除{attachment_mail_drafts'实体{{{ 3}}