使用Spring HibernateTemplate。如何通过Id删除?

2022-09-04 05:04:20

对于数据库的工作,我的类扩展了类,并在我使用Spring的方法中。HibernateDaoSupportHibernateTemplate

因此,对于删除数据库中的行,我使用此方法:

public void delete(MyObject obj) {
    getHibernateTemplate().delete(obj);
}

都还行!

但是,此时我正在尝试实现一个可以基于id删除行的方法:

public void delete(final long id) {
    // some code here
}

我找不到这样的方法:HibernateTemplate
getHibernateTemplate().remove(id)

在这种情况下,对我来说什么是好的解决方案?


答案 1

使用特定 ID 删除,

public void delete(long id)
{
    Session session ;
    MyObject myObject ;

    session = sessionFactory.getCurrentSession();
    myObject = (MyObject)session.load(MyObject.class,id);
    session.delete(myObject);

    //This makes the pending delete to be done
    session.flush() ;

}

还要考虑在 try/catch/finally 中封装此方法,并根据需要记录错误


答案 2

另一种选择是:

public void deleteById(Class clazz,Integer id) {
    String hql = "delete " + clazz.getName() + " where id = :id";
    Query q = session.createQuery(hql).setParameter("id", id);
    q.executeUpdate();
}

推荐