에 문제가 있 JPA 체,Oracle10g 및 일정을 입력합니까?
문제
내가 발생한 다음 매우 성가 행동할 때 사용하여 JPA entitys 과 함께 Oracle10g.
이 있다고 가정은 다음과 같은 엔터티입니다.
@Entity
@Table(name = "T_Order")
public class TOrder implements Serializable {
private static final long serialVersionUID = 2235742302377173533L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "activationDate")
private Calendar activationDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Calendar getActivationDate() {
return activationDate;
}
public void setActivationDate(Calendar activationDate) {
this.activationDate = activationDate;
}
}
이 엔터티를 매핑을 Oracle10g,그래서 DB 가 될 것입니다 테이블 T_ORDER 기본 키가수 열"ID"그리고 타임 스탬프 열"activationDate".
수 내가 만드는 이 클래스의 인스턴스를 활성화와 날짜를"15.Sep2008 00:00".내 지역 시간대에는 중앙 유럽 표준시는 GMT+02:00.때 나 유지 이 객체를 선택하는 테이블에서 데이터를 T_ORDER 를 사용하여 sqlplus,내가 찾는 것 테이블에서 실제로"14.Sep2008 22:00",저장되는 지금까지기 때문에,oracle db 시간은 GMT.
하지만 지금은 성가신 부분입니다.나는 이것을 읽을 때 엔티티로 자바 프로그램,내가 알아내는 오라클 시간 영역은 무시하면"14.Sep2008 22:00 중앙 유럽 표준시로다"명히 잘못입니다.
그래서 기본적으로,쓰는 경우 DB 시간대 정보가 사용될 때,그것을 읽는 무시됩니다.
에 대한 해결책이 있습니까이 거기에 있습니까?가장 간단한 해결책이 나는 것을 설정하는 oracle db 를 시간 GMT+02 지만,불행히도 나 할 수 없습이 있기 때문에 다른 응용 프로그램을 사용하여 동일 서버입니다.
우리가 사용하는 다음과 같은 기술
MyEclipse6.5 JPA 로 최대 절전 모드 3.2 Oracle10g 얇은 JDBC 드라이버
해결책
사용하지 않아야 합니다에 대한 일정에 액세스한 날짜 데이터베이스에서,이에 대한 정확한 이유입니다.당신이 사용해야 한다 java.util.Date
그래서:
@Temporal(TemporalType.TIMESTAMP)
@Column(name="activationDate")
public Date getActivationDate() {
return this.activationDate;
}
java.util.Date
인 순간에 관계없이,모든 시간대.일정에 사용할 수 있습 형식으로 날짜를 위한 특정 시간대 또는 locale.
다른 팁
난 이미 내의 문제 JPA 및 타임스탬프.나는 독서 oracle 포럼 을 확인하시기 바랍 다음과 같다:
- 현장 데이터베이스에 있어야 TIMESTAMP_TZ 고 단지 TIMESTAMP
- 를 추가하려고 주석@일시적인(value=TemporalType.TIMESTAMP)
- 는 경우에 당신은 정말 필요 없어 시간대에 넣어는 날짜 또는 타임 스탬프 필드입니다.