在Hibernate上截断/删除

时间:2012-06-18 16:07:04

标签: java hibernate

使用DELETE FROM myEntity

时遇到问题

我在我的数据库中看到所有条目都已消失,但是当我尝试插入以前存在的条目时,它仍然具有我删除之前的记录。

以下是代码:

static SessionFactory session = NewHibernateUtil.getSessionFactory();

public Session membukaSession(){
  return session.openSession();
}

public void clearRencanaPesan(){
    Session sess = this.membukaSession();
    Query query = sess.createQuery("delete from Rencanapesan");
    query.executeUpdate();
}

所以我尝试使用Truncate

这是代码:

public void clearRencanaPesan(){
    Session sess = this.membukaSession();
    Query query = sess.createQuery("TRUNCATE Table Rencanapesan");
    query.executeUpdate();
}

这个没有工作@@,条目没有被删除。

这是错误

Jun 18, 2012 11:01:54 PM org.hibernate.hql.ast.ErrorCounter reportError SEVERE: line 1:1: unexpected token: TRUNCATE Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: node to traverse cannot be null!

请帮帮我,如何截断或删除所有条目 非常感谢。

1 个答案:

答案 0 :(得分:2)

您提供的查询不包含任何错误。我的第一个猜测是,在使用查询手动删除会话后会话失去同步。 Session.flush()确保会话与底层数据库同步。

public void clearRencanaPesan(){
    Session sess = this.membukaSession();
    Query query = sess.createQuery("delete from Rencanapesan");
    query.executeUpdate();
}
// after you've made your changes and before closing the session.
sess.flush();