【发布时间】:2013-02-20 16:35:52
【问题描述】:
目前,我必须创建一个临时的Criteria 并使用Criteria.list() 获取匹配的实体列表,然后将列表传递给HibernateTemplate.deleteAll():
void delete(Criterion criterion) {
Criteria c = DetachedCriteria.forClass(Foo.class).getExecutableCriteria(session);
c.add(criterion);
getHibernateTtemplate().deleteAll(c.list());
}
是否可以按标准删除但不首先加载列表?
也许,我应该将标准转换为 HQL,例如 "delete from Foo where " + criterion.toHQL()?
背景
我有一个搜索表单,稍后会对其进行解析并转换为 Criteria 组合。
使用 Criteria.list() 检索搜索结果。
现在,出现了一个问题,我想删除所有搜索结果。我是否应该以不同的方式再次解析搜索表单以将其转换为 HQL 字符串?如果我可以重用 Criteria,事情会更简单。
由于 Criteria 最等同于 WHERE 子句,(不是吗?)我认为没有理由不能将 Criteria 用于删除。
【问题讨论】:
标签: java performance hibernate optimization spring-orm