Я думаю, что переход к long
с последующим добавлением соответствующего количества миллисекунд, представляющих «3 часа и 45 минут», будет работать нормально. Невозможно переполнить его, если вы не добавите достаточно миллисекунд для переполнения 64-битной длины - это много миллисекунд.
long millis = time.getTime();
millis += 3 * 3600 * 1000;
millis += 45 * 60 * 1000;
time = new java.sql.Time(millis);
Еще один способ сделать это - использовать невероятные методы Joda Time, которые будут несколько дороже, но, безусловно, более читабельными / легкими:
org.joda.time.DateTime dateTime = new DateTime(time.getTime());
dateTime = dateTime.plusHours(3).plusMinutes(45);
time = new java.sql.Time(dateTime.getMillis());