-1
希望批量刪除數百萬行以避免鎖定。我在下面的代碼,但它刪除所有的行。從表中刪除有限制的行
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();
是否有這樣做
是的,我試過「從表名限制100刪除」,但給我java.lang.IllegalArgumentException:節點遍歷不能爲空! \t在org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:63) \t在org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:280) \t在org.hibernate作爲.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182) – plzdontkillme 2014-10-02 22:02:48
儘量避免setFetchsize(limit)。此方法用於告知要提取多少行,但在您的情況下,您試圖刪除不提取它的行。 – Moni 2014-10-02 22:10:33
感謝Moni我刪除了那部分,但有什麼方法可以指定要刪除的行數? – plzdontkillme 2014-10-02 23:08:06