@Override
  public Object nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)
      throws HibernateException, SQLException {

    Date start = (Date) DateType.INSTANCE.nullSafeGet(rs, names[0], session, owner);
    Date end = (Date) DateType.INSTANCE.nullSafeGet(rs, names[1], session, owner);

    return new DateTimeRange(new DateTime(start), new DateTime(end));
  }
  @Override
  public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session)
      throws HibernateException, SQLException {

    if (value == null) {
      DateType.INSTANCE.nullSafeSet(st, null, index, session);
      DateType.INSTANCE.nullSafeSet(st, null, index + 1, session);
    } else {
      DateTimeRange range = asDateTimeRange(value);
      DateType.INSTANCE.nullSafeSet(st, range.getStart(), index, session);
      DateType.INSTANCE.nullSafeSet(st, range.getEnd(), index + 1, session);
    }
  }