Делает отображение поддержки JPA 1.0 GregorianCalendar
? Я ничего не нашел в JPA 1.0's отображающаяся спецификация файла о GregorianCalendar
. Что относительно JPA 2.0?
JPA поддерживает java.util.Calendar и его подклассы. Единственное предостережение: вы должны использовать аннотацию @Temporal, чтобы указать, как поле хранится в базе данных. Обе версии спецификации имеют это требование. Вот раздел из спецификации JPA 2.0:
11.1.47 Временная аннотация
Временная аннотация должна быть указана для постоянных полей или свойств типа java.util.Date и java.util.Calendar. Его можно указывать только для полей или свойств эти типы.
Временная аннотация может использоваться вместе с аннотацией Basic, аннотацией 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;
// . . .
}
Можно сопоставить java.util.Calendar без специального сопоставления.
Это даст вам тот же результат.
JPA позволяет отображать java.util.Calendar
(и его подкласс). Из спецификации JPA 1.0:
9.1.18 Базовая аннотация
Базовая аннотация является простейшим тип отображения на столбец базы данных. Аннотация Basic может быть применена к постоянному свойству или экземпляру переменной любого из следующих типов: примитивные типы Java, обертки примитивных типов,
java.lang.String
,java.math.BigInteger
,java.math.BigDecimal
,java.util.Date
,java.util.Calendar
,java.sql.Date
,java.sql.Time
,java.sql.Timestamp
,byte[]
,Byte[]
,char[]
,Character[]
, перечисления, и любой другой тип, который implementsSerializable
. Как описано в разделе 2.1.6, использование аннотации Basic является необязательным для постоянных полей и свойств этих типов.