按用户名DAO / hibernate删除记录

时间:2012-12-19 22:07:06

标签: hibernate java-ee spring-mvc dao

如何删除与一个用户关联的所有记录,例如我想删除数据库中当前登录用户的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
                    + "'");
}

我正在尝试这样的事情,但它失败了,我无法继续前进。怎么做对了?

2 个答案:

答案 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();