我正在尝试使用休眠查询删除表“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
}
试试这个:
sessionFactory.getCurrentSession().createQuery("delete from User_Role").executeUpdate();
您可以使用此方法一次删除一个类的所有实例。如果您有很多记录,速度会更慢,但是,您不会复制表名称的文字字符串。
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);