문제

내가 발생한 다음 매우 성가 행동할 때 사용하여 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)
  • 는 경우에 당신은 정말 필요 없어 시간대에 넣어는 날짜 또는 타임 스탬프 필드입니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top