目前,我必须创建一个临时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 最等同于 WHERE 子句,(不是吗?)我认为没有理由不能将 Criteria 用于删除。