Hibernate从表中删除限制行

时间:2014-10-02 21:44:28

标签: java hibernate

您希望批量删除表中数百万行以避免锁定。我正在尝试下面的代码,但它删除所有行。

 Session session;
    try {
        session = dao.getHibernateTemplate().getSessionFactory().getCurrentSession();
    } catch (HibernateException e) {
        session = dao.getHibernateTemplate().getSessionFactory().openSession();
    }
    String sql = "delete from "+clazz.getSimpleName();
    session.createQuery(sql).setFetchSize(limit).executeUpdate();
    dao.getHibernateTemplate().flush();

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

我正在考虑" clazz.getSimpleName();"正在返回一个表名。

如果是这种情况,则查询是 - "从' tablename'"删除在这里,您没有指定任何限制删除语句的条件,这就是它从表中删除所有行的原因。

当你使用setFetchSize时 - setFetchSize(int value)是一个'提示'到驱动程序,告诉它应该获取多少行。

我认为在删除查询的情况下不需要此方法。