我想在一个域类中运行一个删除所有的类属性值(Member.submissionId和submission.id作为长类型)。Grails deleteAll()失败,休眠异常
这里是我的代码:
def memberCount = Member.where{ eq("submissionId", submission.id) }.deleteAll()
这里是例外,我得到:
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属于父提交对象,其中Member有一个通过其submissionId属性(它属于另一个对象)的提交的软链接。
有什么建议吗?
编辑:另外,我是否正确假设此删除方法不是级联删除由于它生成的SQL?即属于选定成员的对象不会被删除。
这是一个相当大的风险/麻烦,我认为。我还可以运行此删除查询还有哪些其他方法?理想情况下,也可以使用级联删除。 – shuttsy 2013-03-06 12:26:06
不太漂亮,但它会工作:Member.where {eq(“submissionId”,submission.id)} .each {it.delete()} – Dopele 2013-03-06 13:17:43