1

我正在使用休眠通用 dao 项目。我需要搜索“date1”字段早于“date2”的所有记录,例如:

search.addFilterLessThan('date1', 'date2');

然而,从 API 看来,搜索只接受值作为第二个参数而不是属性:

Date date = ...;
search.addFilterLessThan('date1', date);

有没有办法根据两个记录字段进行过滤?

4

2 回答 2

1

我假设您使用的是 Hibernate 标准 API。如果你是,比较属性很容易:

Criteria criteria = session.createCriteria(SomeObject.class);
criteria.add(Property.forName("date1").ltProperty("date2"));
criteria.list();

您还可以跨连接和 SQL 支持的各种其他方案进行比较。这种事情也可以通过 HQL 获得。

查看 Hibernate Generic DAO Project 后更新:

看起来 Hibernate Generic DAO 项目在休眠功能方面束缚了您的双手,限制了可能的查询种类(不公开 Criteria 或 HQL 查询!)。我不认为这是增值,即使声称它“简化”了您的查询或使它们更“健壮”。

于 2012-02-24T19:27:19.887 回答
1

从项目组得到答案,它是使用自定义过滤器完成的:

search.addFilterCustom("{date1} < {date2}"); 
于 2012-02-26T13:09:00.880 回答