我有一个表,其中包含需要根据一组标准定期清除的记录。
我原以为我可以使用标准构建器来删除记录,但由于没有 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 中执行,但这也感觉不对。标准构建器仅用于检索吗?
谢谢
最佳答案
来自 User Guide about deleting objects :
Note that Grails does not supply a deleteAll method as deleting data is discouraged and can often be avoided through boolean flags/logic.
If you really need to batch delete data you can use the executeUpdate method to do batch DML statements:
Customer.executeUpdate("delete Customer c where c.name = :oldName", [oldName:"Fred"])
关于hibernate - 如何批量删除 Grails/GORM 中的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2232621/