web-dev-qa-db-ja.com

テーブル休止状態のすべての行を削除するクエリ

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 
}
7
Sanjay Kumar

これを試して:

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

このメソッドを使用して、クラスのすべてのインスタンスを一度に1つずつ削除できます。多くのレコードがある場合は遅くなりますが、テーブル名のリテラル文字列を複製しているわけではありません。

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);
2
Stealth Rabbi