Запрос на удаление всех строк в таблице гибернации

Я пытаюсь удалить все строки в таблице "user_role" с помощью запроса hibernate. Но каждый раз я получаю ошибки. Кто-нибудь, пожалуйста, помогите мне с этим.

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 
}

2 ответов


попробуйте это:

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(o);
    }
    session.getTransaction().commit();
}

использование:

removeAllInstances(User_Role.class);