JPA поддерживает java.util.Calendar и его подклассы. Единственное предостережение в том, что вы должны использовать аннотацию @Temporal, чтобы указать, как поле хранится в базе данных. Обе версии спецификации имеют это требование, вот раздел из спецификации JPA 2.0:
11.1.47 Временная аннотация
Временная аннотация должна быть указана для постоянных полей или свойств типа
java.util.Date и java.util.Calendar. Это может быть указано только для полей или свойств
эти типы.
Временная аннотация может использоваться вместе с основной аннотацией, аннотацией Id или аннотацией ElementCollection [111] (когда значение коллекции элементов имеет такой временной тип).
Перечисление TemporalType определяет отображение для этих временных типов.
public enum TemporalType {
DATE, //java.sql.Date
TIME, //java.sql.Time
TIMESTAMP //java.sql.Timestamp
}
В противном случае вам не нужно делать ничего особенного. Ваша сущность может выглядеть примерно так:
@Entity
public class Person {
// . . .
@Temporal(TemporalType.TIMESTAMP)
private GregorianCalendar lastUpdated;
// . . .
}