契約が有効かどうかを1年間確認する休止状態を作成しています。契約の開始日と終了日は標準の日付フィールドになります。Hibernate Criteria抽出年から日付
だからSQL-SERVERに使用されて、私はこのSQLの行で何かを思うだろう:
SELECT * FROM CONTRACT WHERE YEAR(startDate) <= ? AND YEAR(endDate) >= ?
questionmarkが整数として与えられた年です。
どのようにこれを休止状態の基準に変換するのですか?
int year = 2011; //Just a testyear for example purposes.
DetachedCriteria criteria = DetachedCriteria.forClass(Contract.class)
.add(Restrictions.le("startDate", year))
.add(Restrictions.ge("endDate", year));
ご覧のとおり、比較できるように、日付を1年に変換するビットがありません。もちろん、私のコードはそのまま実行されません。
希望の結果を得るための提案はありますか?あなたの問題は解決します
'toEndOfYear'方法は、に1を追加する必要がありますけれどもソリューション1は、素敵なきれいな代替手段ですyearが 'cal.set'に渡されると、それ以外の場合は前年の終わりを得ます – Numeron