2011-03-12 8 views
2

特定の日付にアクティブなすべてのイベントエンティティを検索したいと思います。例えば:日付が開始日と終了日の間で、nullの可能性があるHibernateエンティティを見つける

from Event where startDate <= :specifiedDate and endDate > :specifiedDate 

しかし、Event.startDateEvent.endDatenullすることができます。 A nullの値は、開始日または終了日がないことを示します(開始時刻は過去に無期限に終了するか、または将来は無期限に終了します)。

したがって、if Event.startDate = null and Event.endDate = 2011-05-01の場合、2011-05-01より小さいすべてのspecifiedDate値に対して、そのイベントを返す必要があります。

if Event.startDate = 2011-03-01 and Event.endDate = nullの場合、2011-03-01以上のすべてのspecifiedDate値に対して、そのイベントを返す必要があります。

最後にif Event.startDate = null and Event.endDate = nullの場合、指定された日付のイベントが返されます。

これはHibernateとMySQLバックエンドを使って可能ですか?

答えて

4

これは確かに可能です。それがうまくいくように見える

List events = sess.createCriteria(Event.class) 
       .add(Restrictions.or(
          Restrictions.isNull("startDate"), 
          Restrictions.ge("startDate", specifiedDate)) 
       .add(Restrictions.or(
          Restrictions.isNull("endDate"), 
          Restrictions.lt("endDate", specifiedDate)) 
       .list(); 
+0

おかげで、:それはのようなものであるべき基準を用いて

! – Tauren

関連する問題