我正在尝试在我限定其中一个类属性值(Member.submissionId 和submission.id 作为长类型)的域类上运行 delete all。

这是我的代码:

def memberCount = Member.where{ eq( "submissionId", submission.id ) }.deleteAll() 

这是我得到的异常(exception):
nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: member near line 1, column 57 [DELETE my.domain.Member member WHERE (member.submissionId=?)] 

我引用提交对象的其他删除似乎工作正常:
def subErrorCount = SubmissionError.where{ eq( "submission", submission ) }.deleteAll() 

对于这个删除,生成的 SQL 是正确的:
delete from submission_error where submission_id=? 

我能看到的唯一区别是 SubmissionError 属于父 Submission 对象,其中 Member 通过其 submitId 属性(它属于另一个对象)具有到 Submission 的软链接(soft link)。

有什么建议么?

编辑:另外,由于它生成的 SQL,我假设此删除方法不是级联删除是否正确?即,属于选定成员的对象不会被删除。

请您参考如下方法:

看起来“成员”是 HQL 中的保留字。如果不是很麻烦,我建议更改域模型名称。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!