休眠标准和NULL

时间:2012-05-06 11:45:41

标签: java hibernate

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

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

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

  • 没有合同的所有公寓
  • 所有公寓的startDate等于或等于今年,NULL为endDate
  • 所有公寓的endDate等于或等于今年,而NULL为startDate
  • 所有公寓的startDate等于或在今年之前,并在今年结束时或之后结束。

到目前为止,我不确定如何处理NULL。以及如何将年份与日期字段进行比较。任何帮助都会受到极大关注。

我已经走到了这一步:

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

1 个答案:

答案 0 :(得分:0)

对于null,您需要使用显式NullExpression标准,就像您编写直接SQL时所使用的那样。