hibernate - 如何批量删除 Grails/GORM 中的记录?

标签 hibernate grails grails-orm

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

我原以为我可以使用标准构建器来删除记录,但由于没有 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/

相关文章:

java - Spring + Hibernate Web 应用程序 - 何时使用缓存?

java - 如何使用@EmbeddedId映射实体?

java - 从数据库映射文件和 POJOS for postgres 不工作

grails - 从单独的表中按日期检索域实例

grails - 继承的 grails 域类缺少动态属性

hibernate - 当我从 POST 方法更新它时,@CreationTimestamp 列设置为空

hibernate - 解决标准生成器中缺乏 sqlProjection 支持的问题吗?

java - Grails - 在 CLASSPATH 中找不到类 "org.grails.tomcat.TomcatLoader"

spring - 使用 Map 类型的构造函数参数定义 Spring bean

grails - 如何在 GORM 中建立可选的一对一关系?