Java: классы JPA, рефакторинг с даты на дату и время - PullRequest
5 голосов
/ 26 мая 2010

С таблицей, созданной с использованием этого SQL

Create Table X (
    ID varchar(4) Not Null,
    XDATE date
);

и класс сущности, определенный так

@Entity
@Table(name = "X")
public class X implements Serializable {
    @Id
    @Basic(optional = false)
    @Column(name = "ID", nullable = false, length = 4)
    private String id;
    @Column(name = "XDATE")
    @Temporal(TemporalType.DATE)
    private Date xDate; //java.util.Date
    ...
}

С учетом вышеизложенного я могу использовать JPA для достижения объектно-реляционного отображения. Однако атрибут xDate может хранить только даты, например dd/MM/yyyy.

Как выполнить рефакторинг вышеприведенного для сохранения объекта полной даты, используя только одно поле, т.е.

Ответы [ 2 ]

7 голосов
/ 26 мая 2010

Если вы также хотите сохранить информацию о времени на уровне базы данных, используйте TemporalType.DATETIME:

@Column(name = "XDATE")
@Temporal(TemporalType.DATETIME)
private Date xDate; //java.util.Date

Используйте тип столбца TIMESTAMP на уровне базы данных (и xDate будет храниться как 'yyyy-MM-dd HH:mm:ss.S').

4 голосов
/ 26 мая 2010

Вы пытались изменить значение @Temporal на TemporalType.DATETIME? java.util.Date и java.sql.Date хранят компоненты даты и времени, TemporalType контролирует, какая часть JPA хранится / на которую обращает внимание; дата, время или оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...