2012-02-24 11 views
1

私はhibernate generic dao projectを使用しています。検索のみを第二引数ではなくプロパティとして値を受け入れることをAPIかららしいしかしHibernateジェネリックDAO検索

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

:私は、「日付1」フィールドが「日付2」より前のすべてのレコードを検索するためのようなものが必要:

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

2つのレコードフィールドに基づいてフィルタリングする方法はありますか?

答えて

1

は、プロジェクトのグループからの回答を得た、それはカスタムフィルタを使用して行われています:

search.addFilterCustom("{date1} < {date2}"); 
1

あなたはHibernate基準APIを使用していると仮定します。

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

また、SQLでサポートされているさまざまなシナリオを比較することもできます。この種のことはHQLでも利用可能です。

更新休止ジェネリックDAOプロジェクトを検討した後:

が可能クエリの様々な制限、Hibernateの機能の面で手を繋ぐ休止ジェネリックDAOプロジェクトのように見える(基準またはHQLクエリーを露出していないが!)。クエリを「簡略化」したり、「ロバスト」にするという主張でも、これは付加価値として表示されません。

+0

私は、休止状態、一般的な-DAOの検索とフィルタのクラスを使用している他の部分との整合性のためにそれらを使用することを好むだろうプロジェクトの。私がそれらのクラスで必要なものを達成できない場合、私は基準を使用します – Alex

+0

うわー、そのフレームワークは本当にあなたの手を結びます。検索やフィルターのクラスで "hibernate-generic-dao"というラッピングを使ってこのタイプの検索を行うことはできないようです。私はそれをリッピングし、独自のDAOを作成するか、自分のプロジェクトに適した、より柔軟で柔軟性のある「汎用DAO」を作成します。 –

+0

さらに、その特定のプロジェクトはもはや元の開発者によってサポートされていません。 –

関連する問題