查询删除hibernate表中的所有行

问题描述 投票:0回答:2

我正在尝试使用休眠查询删除表“user_role”中的所有行。但每次我都会遇到错误。有人可以帮我吗?

DaoImpl

@Override
public void deleteAll() {
    session.getCurrentSession().delete(/*delete all query*/);
}

模特班

@Entity @Table(name="user_role")
public class User_Role {
    
    @Id @Column @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    
    @Column(name="role_name")
    private String name;
    
    //setter and getter 
}
hibernate hql delete-row
2个回答
12
投票

试试这个:

sessionFactory.getCurrentSession().createQuery("delete from User_Role").executeUpdate();

2
投票

您可以使用此方法一次删除一个类的所有实例。如果您有很多记录,速度会更慢,但是,您不会复制表名称的文字字符串。

public static void removeAllInstances(final Class<?> clazz) {
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    Session session = sessionFactory.getCurrentSession();       
    session.beginTransaction();
    final List<?> instances = session.createCriteria(clazz).list();
    for (Object obj : instances) {
        session.delete(obj);
    }
    session.getTransaction().commit();
}

用途:

removeAllInstances(User_Role.class);
© www.soinside.com 2019 - 2024. All rights reserved.