您如何在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