如何删除与一个用户关联的所有记录,例如我想删除数据库中当前登录用户的5条记录。 这是我的代码:
public void deleteOrders() {
Authentication auth = SecurityContextHolder.getContext()
.getAuthentication();
String user = auth.getName(); // get logged in username
getHibernateTemplate().delete(
"FROM " + Orders.class.getName() + " WHERE username='" + user
+ "'");
}
我正在尝试这样的事情,但它失败了,我无法继续前进。怎么做对了?
答案 0 :(得分:3)
HibernateTemplate.delete()
将实体实例作为参数删除。它不需要HQL查询。
使用bulkUpdate()
执行删除查询。或者甚至更好,忘记不推荐使用的HibernateTemplate,并直接使用Hibernate API。
答案 1 :(得分:0)
那可能不会起作用,因为class.getName()
包含了包路径,但如果您的类名与表名相同,getSimpleName()
可能有用:
"FROM " + Orders.class.getSimpleName() + " WHERE ..."
但是,我倾向于做这样的事情:
entityManager.createNativeQuery("delete from orders where ...").execute();