2011-06-14 3 views
4

Oracle DB (dd/mm/yyyy hh/mm/ss)에서 전체 DATE 정보를 가져 오는 데 문제가 있습니다.JPA 엔티티 : Oracle DATE 열에서시, 분 및 초 가져 오기

update my_table 
set my_date_column=(to_date('2011-06-15 15:43:12', 'yyyy-mm-dd hh24:mi:ss')); 

하지만 내 JPA 엔티티에 내가 가진 :

@Column(name = "MY_DATE_COLUMN") 
@Temporal(TemporalType.DATE) 
private Date dateDetailed; 


public Date getDateDetailed() { 
    if (this.dateDetailed!= null) { 
     return this.dateDetailed; 
    } 
    return null; 
} 

public void setDateDetailed(Date dateDetailed) { 
    if (dateDetailed!= null) { 
     this.dateDetailed= dateDetailed; 
    } else { 
     this.dateDetailed= null; 
    } 
} 

내 객체를 acccess 때마다 내가 원하는 열의 데시벨 수준에서

, 나는 테스트 값을 설정받을 수 , 그것은 시간, 분 및 초없이 저에게 날짜를주고 있습니다.

나는 TemporalType.TIMESTAMP를 사용하려고 시도했으나이 경우 필자는 db에서 열 유형을 변경해야한다.

제안 사항?

답변

3

해당 사항 TemporalType.DATE TIME 또는 TIMESTAMP가 필요합니다. DATE는 시간이없는 날짜입니다. TIMESTAMP는 숫자로 표시됩니다.

+0

TemporalType.DATETIME 유효 javax.persistence.TemporalType 유형이 아닙니다. DATE, TIME 및 TIMESTAMP 만 유효합니다. TIMESTAMP를 사용하면 DATE 대신 TIMESTAMP가되도록 DB의 열 유형을 변경해야하며 가능한 경우 th를 피하고 싶습니다. – gospodin

+1

불행히도, 당신은 상관없이 그렇게해야합니다. DATE 타입의 Oracle 컬럼을 생성하면,'create table foo (bar date);와 같이 날짜와 함께 시간 정보를 저장하지 않습니다. 이 테이블을 생성하고 언급 한 삽입을 수행하면 시간 정보가 제거되고 열에 '15-JUN-11 03.43.12.000000000 PM'이 아닌'15-JUN-2011' 만 포함됩니다. SQL dev 출력에서 ​​볼 수 있듯이). JPA가 필요한 기능을 제공하려면 DB 열에서 데이터를 지원할 수 있어야합니다. –

+0

@Kris이 경우 왜 DATE 열에 만 날짜를 저장할 수 있는지, 내 선택으로 시간, 분 및 초를 포함한 실제 가치를 부여하는지 설명 할 수 있습니까? 또한 DATE 열 유형을 사용하여 EJB2 엔티티 bean으로 시간, 분 및 초를 검색 할 수 있습니까? – gospodin

2

TIMESTAMP 임시 유형을 사용하면 Java 날짜 데이터 유형의 날짜와 시간 부분을 가져 오지만 Oracle은 TIMESTAMP 데이터 유형으로 열을 작성합니다. 당신이 DATE 데이터 타입을 원하는 경우이 문제를 극복하기 위해, 당신은 같은 열 주석의 columnDefinition 매개 변수를 사용할 수 있습니다

@Column(name = "MY_DATE_COLUMN", columnDefinition = "DATE") 
@Temporal(TemporalType.TIMESTAMP) 
private Date dateDetailed; 
+0

감사합니다. @gerardnico ... – xild