use*_*011 12 java spring hibernate
对于使用数据库,我的类扩展了HibernateDaoSupport
类,并在我使用Spring的方法内部HibernateTemplate
.
因此,为了删除数据库中的一行,我使用以下方法:
public void delete(MyObject obj) {
getHibernateTemplate().delete(obj);
}
Run Code Online (Sandbox Code Playgroud)
一切都好!
但是,此时我正在尝试实现一个可以删除基于id的行的方法:
public void delete(final long id) {
// some code here
}
Run Code Online (Sandbox Code Playgroud)
我找不到HibernateTemplate
像这样的方法:
getHibernateTemplate().remove(id)
在这种情况下,对我来说什么是好的解决方案?
Kus*_*han 35
使用特定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() ;
}
Run Code Online (Sandbox Code Playgroud)
还要考虑在try/catch/finally中包含此方法,并根据需要记录错误
Ger*_*ere 11
另一种选择是:
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();
}
Run Code Online (Sandbox Code Playgroud)
正如您所提到的,HibernateTemplate中没有这样的方法.你可以做到以下几点,
hibernateTemplate.delete(hibernateTemplate.get(Class,Id));
Run Code Online (Sandbox Code Playgroud)
小智 6
您也可以使用以下方法:
public void deleteById(Class clazz,Integer id) {
hibernateTemplate.bulkUpdate("delete from "+clazz.getName()+" where id="+id);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46412 次 |
最近记录: |