查询以删除表hibernate中的所有行

q1qsirdb  于 8个月前  发布在  其他
关注(0)|答案(2)|浏览(71)

我正在尝试使用hibernate查询删除表“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 
}
brjng4g3

brjng4g31#

试试这个:

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

0pizxfdo2#

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

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);

相关问题