0

有効な契約日を持つすべてのアパートをフェッチするHibernate基準を構築しています。アパルトマンと契約の間には1対1の関係があります。それらは埋め込まれていません。契約は必須ではないため、アパートには契約がない場合があります。契約には開始日と終了日がありますが、これらは必須ではないため、一方または両方がNULLになる可能性があります。

  • 契約がない場合、それはアパートが終わりのない契約を結んでいることを意味します。
  • 契約開始がNULLの場合、それは契約が日の夜明けから続いたことを意味します
  • 契約終了がNULLの場合、契約は永久に有効です。

基本的に、DAOに整数を送信しています。整数は年を示します。DAOは、その年のある時点で有効であった/有効なすべてのアパートを返却する必要があります。つまり、次のように戻る必要があります。

  • 契約のないすべてのアパート
  • startDateが今年以前で、endDateがNULLのすべてのアパートメント
  • endDateが今年以降で、startDateがNULLのすべてのアパート
  • startDateが今年以前で、enddateが今年以降のすべてのアパート。

これまでのところ、NULLを処理する方法がわかりません。また、年を日付フィールドと比較する方法もあります。どんな助けでも大いに感謝されるでしょう。

私はこれまでに得ました:

DetachedCriteria criteria = DetachedCriteria.forClass(Appartment.class)
    .setFetchMode("contract", FetchMode.JOIN)
    .createAlias("contract", "c")
    .add(Restrictions.le("c.startDate", ????))
    .add(Restrictions.ge("c.endDate", ????));
4

1 に答える 1

0

nullについては、NullExpression直接SQLを作成した場合と同じように、明示的な基準を使用する必要があります。

于 2012-05-06T11:49:28.247 に答える