0

我正在构建一个休眠标准,它将获取所有具有有效合同日期的公寓。公寓和合同之间存在一对一的关系。它们没有嵌入。合同不是强制性的,因此公寓可能没有合同。合同有开始和结束日期,但它们不是强制性的,因此其中一个或两个可能为 NULL。

  • 如果没有合同,则意味着该公寓有永无止境的合同。
  • 如果合约开始为NULL,则表示合约从天开始就持续
  • 如果合约结束为NULL,则合约永久有效。

基本上我正在向我的 DAO 发送一个整数。整数表示年份。DAO 应返回该年某个时间有效/有效的所有公寓。这意味着它应该返回:

  • 所有没有合同的公寓
  • startDate 早于或等于今年的所有公寓,并且 NULL 作为 endDate
  • endDate 等于或晚于今年的所有 Appartments,并且 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 回答