2010-05-26 9 views
5
테이블로

에 리팩토링은 I가 JPA를 사용할 수 있습니다,이 SQL자바 : JPA 클래스, 날짜 날짜 시간

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 
    ... 
} 

같이 정의 엔티티 클래스를 사용하여 만든 객체 관계형 매핑을 달성하십시오. 그러나 xDate 속성은 날짜 만 저장할 수 있습니다. dd/MM/yyyy.

위 필드를 사용하여 하나의 필드 (예 : dd/MM/yyyy HH24:mm)를 사용하여 전체 날짜 개체를 저장하는 방법을 리팩터링하려면 어떻게해야합니까?

답변

4

@Temporal 값을 TemporalType.DATETIME으로 변경해 보셨습니까? java.util.Date와 java.sql.Date는 날짜와 시간 컴포넌트를 저장한다. TemporalType은 JPA가 저장 /주의를 기울이는 부분을 제어한다. 날짜, 시간 또는 둘 다. 당신은 또한 데이터베이스 수준에서 시간 정보를 저장하려면

+0

@sblundy : 답변을 주셔서 감사합니다.하지만 내 실체 클래스의 멤버 변수 또는 테이블의 스키마 정의를 변경해야합니까? – bguiz

+0

@bguiz : 필드 번호, 열 예. 사용하는 DB에 따라 다르지만 DATETIME이 작동해야합니다. – sblundy

+0

@sblundy : Toplink/JavaDB – bguiz

7

, TemporalType.DATETIME를 사용

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

데이터베이스 수준에서 TIMESTAMP 열 유형을 사용 (그리고 xDate'yyyy-MM-dd HH:mm:ss.S'로 저장됩니다).

+0

+1 @ Pascal Thivent : 답을 보내 주셔서 감사합니다. 두 분 모두 맞았습니다.하지만 그가 처음 이래로 수표를 내고 있습니다. – bguiz

+0

@ bguiz 물론, 아무 문제 없어! –

+3

안녕하세요. 나는 JPA를'EclipseLink'와 함께 사용하고 있으며'TemporalType'은'DATETIME'이 아닌'DATE','TIME','TIMESTAMP' 옵션만을 가지고 있습니다. 'TIMESTAMP' 또는'TIME'을 사용해야합니까? –