JPA и GregorianCalendar

Делает отображение поддержки JPA 1.0 GregorianCalendar? Я ничего не нашел в JPA 1.0's отображающаяся спецификация файла о GregorianCalendar. Что относительно JPA 2.0?

5
задан Pascal Thivent 19 July 2010 в 19:46
поделиться

3 ответа

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;

    // . . .
}
18
ответ дан 18 December 2019 в 06:34
поделиться

Можно сопоставить java.util.Calendar без специального сопоставления.

Это даст вам тот же результат.

0
ответ дан 18 December 2019 в 06:34
поделиться

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[], перечисления, и любой другой тип, который implements Serializable. Как описано в разделе 2.1.6, использование аннотации Basic является необязательным для постоянных полей и свойств этих типов.

5
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: