0

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

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

4

2 回答 2

3

HibernateTemplate.delete()将要删除的实体实例作为参数。它不需要 HQL 查询。

用于bulkUpdate()执行删除查询。甚至更好的是,忘记已弃用的 HibernateTemplate,直接使用 Hibernate API。

于 2012-12-19T22:29:28.447 回答
0

好吧,这可能行不通,因为class.getName()包括包路径,但是如果您的类名与表名相同,则getSimpleName()可能会起作用:

"FROM " + Orders.class.getSimpleName() + " WHERE ..."

但是,我倾向于做这样的事情:

entityManager.createNativeQuery("delete from orders where ...").execute();
于 2012-12-19T22:25:02.053 回答