hibernate - Grails deleteAll() 因 hibernate 异常而失败

标签 hibernate grails grails-orm

我正在尝试在我限定其中一个类属性值(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 中的保留字。如果不是很麻烦,我建议更改域模型名称。

关于hibernate - Grails deleteAll() 因 hibernate 异常而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15246501/

相关文章:

mysql - 无法比较日期

java - JPA实体字段引用OneToOne递归

grails - 如何在约束自定义验证中访问URL映射参数?

java - Grails - 通过从基类中选择来使用父类(super class)

Grails GORM : Change foreign key column name

grails - 保存新记录时动态发现关系的更好方法? (对方失败)

java - Hibernate:从映射迁移到注释 - 是否可以混合使用 hbm 和注释?

mysql - 用于测试的 JSF 托管

Grails:重定向到不在任何 Controller 中的index.gsp

javascript - 使用 Grails 在执行警报的事件处理程序中转义双引号