我有一个表,其中包含需要根据一组条件定期清除的记录。
我期望我可以使用条件构建器来删除记录,但这失败了,因为delete条件上没有方法…
delete
def c = Agency.createCriteria() c.delete { eq("agency", "XXX") }
所以我想也许我先查询一下集合,然后删除那个…
def c = Agency.createCriteria() def deletions = c { eq("agency", "XXX") } deletions.delete
由于相同的原因,不同的对象,这也会失败。
那么正确的方法是什么呢?我似乎不得不遍历delete()每个项目所调用的整个结果集,这是多余的(不正当的)。
delete()
我知道我可以形成一个查询来直接在HQL或SQL中执行,但这也感觉不对。条件构建器仅用于检索吗?
谢谢
从用户指南中删除对象:
注意,Grails不提供deleteAll方法,因为不鼓励删除数据,通常可以通过布尔标志/逻辑来避免。 如果确实需要批量删除数据,则可以使用executeUpdate方法执行批处理DML语句:
注意,Grails不提供deleteAll方法,因为不鼓励删除数据,通常可以通过布尔标志/逻辑来避免。
如果确实需要批量删除数据,则可以使用executeUpdate方法执行批处理DML语句:
Customer.executeUpdate("delete Customer c where c.name = :oldName", [oldName:"Fred"])