我正在使用hibernate generic dao project。我需要搜索'date1'字段早于'date2'的所有记录,例如:
search.addFilterLessThan('date1', 'date2');
然而,从API看来,搜索只接受值作为第二个参数而不是属性:
Date date = ...;
search.addFilterLessThan('date1', date);
有没有办法根据两个记录字段进行过滤?
答案 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}");