我正在使用hibernate generic dao project。我需要尋找所有記錄在「日期1」字段是不是「date2的」早期,是這樣的:休眠通用DAO搜索
search.addFilterLessThan('date1', 'date2');
但是它從搜索只接受值作爲第二個參數,而不是性能的API似乎:
Date date = ...;
search.addFilterLessThan('date1', date);
有沒有辦法根據兩個記錄字段進行過濾?
我正在使用hibernate generic dao project。我需要尋找所有記錄在「日期1」字段是不是「date2的」早期,是這樣的:休眠通用DAO搜索
search.addFilterLessThan('date1', 'date2');
但是它從搜索只接受值作爲第二個參數,而不是性能的API似乎:
Date date = ...;
search.addFilterLessThan('date1', date);
有沒有辦法根據兩個記錄字段進行過濾?
得到了該項目的研究小組的答案,它使用自定義過濾器來完成:
search.addFilterCustom("{date1} < {date2}");
我假設您使用的是Hibernate標準API。如果是,比較屬性很簡單:
Criteria criteria = session.createCriteria(SomeObject.class);
criteria.add(Property.forName("date1").ltProperty("date2"));
criteria.list();
您還可以比較跨連接和SQL支持的各種其他方案。這種事情也可以通過HQL獲得。回顧Hibernate的泛型DAO項目後
更新:
看起來像Hibernate的泛型DAO項目捆綁你的手在休眠功能方面,限制了各種查詢的可能(不暴露標準或HQL查詢!)。我不認爲這是附加值,即使聲稱它「簡化」了您的查詢或使其更「健壯」。
我使用Hibernate的泛型DAO和搜索和過濾器類,寧願與其他使用它們的一致性的項目。如果我不能達到我需要的那些類,我將使用標準 – Alex 2012-02-24 19:47:15
哇,那個框架真的牽絆你的手,而不是一個好方法。看起來像使用包含「搜索」或「篩選器」類的包裝「hibernate-generic-dao」項目來執行此類搜索是不可能的。我會撕掉它,或者編寫自己的DAO,或爲自己的項目創建更好,更靈活/限制更少的「通用道」。 – 2012-02-25 00:15:19
此外,原始開發人員不再支持該特定項目。 – 2012-02-25 00:15:42