您如何在Grails / GORM中批量删除记录?

我有一个表,其中包含需要根据一组条件定期清除的记录。

我期望我可以使用条件构建器来删除记录,但这失败了,因为delete条件上没有方法…

def c = Agency.createCriteria()

c.delete

{

eq("agency", "XXX")

}

所以我想也许我先查询一下集合,然后删除那个…

def c = Agency.createCriteria()

def deletions = c

{

eq("agency", "XXX")

}

deletions.delete

由于相同的原因,不同的对象,这也会失败。

那么正确的方法是什么呢?我似乎不得不遍历delete()每个项目所调用的整个结果集,这是多余的(不正当的)。

我知道我可以形成一个查询来直接在HQL或SQL中执行,但这也感觉不对。条件构建器仅用于检索吗?

谢谢

回答:

从用户指南中删除对象:

注意,Grails不提供deleteAll方法,因为不鼓励删除数据,通常可以通过布尔标志/逻辑来避免。

如果确实需要批量删除数据,则可以使用executeUpdate方法执行批处理DML语句:

Customer.executeUpdate("delete Customer c where c.name = :oldName", [oldName:"Fred"])

以上是 您如何在Grails / GORM中批量删除记录? 的全部内容, 来源链接: utcz.com/qa/425634.html

回到顶部