Hibernate通用DAO搜索

时间:2012-02-24 17:52:06

标签: hibernate search hibernate-generic-dao

我正在使用hibernate generic dao project。我需要搜索'date1'字段早于'date2'的所有记录,例如:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我假设您使用的是Hibernate条件API。如果是,比较属性很简单:

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

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

审核Hibernate Generic DAO项目后更新:

看起来Hibernate Generic DAO项目在休眠功能方面与你的手紧密相关,限制了各种可能的查询(不暴露Criteria或HQL查询!)。我不认为这是增值,即使声称它“简化”您的查询或使其更“强大”。

答案 1 :(得分:1)

从项目组获得答案,使用自定义过滤器完成:

search.addFilterCustom("{date1} < {date2}"); 
相关问题