質問

私の経験は非常に迷惑に行動を利用の場合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.月2008年00:00".私の地元のタイムゾーンが最終日のみがGMT+02:00になります。時まで続くこのオブジェクトを選択し、データテーブルからT_ORDER用sqlplus、このテーブルで実際に"14.月2008 22:00"が格納され、okなので、oracle dbのタイムゾーンがGMT.

今の迷惑ます。時を読んでこのエンティティに戻っJAVAプログラムを見たいのは、oracle時間帯の指定は無視され、い"14.月2008 22:00最終日のみである"確認コードが正が間違っている。

なので基本的には、書き込みのDBのタイムゾーン情報を読み込むときには無視されます。

あな解決策が?最も簡単な解いでしょうかねの設定にoracle dbのタイムゾーンをGMT+02がunfortunatlyこれができないことがありますの他のアプリケーションと同じサーバです。

また、以下の技術

MyEclipse6.5 JPAとHibernate3.2 Oracle10g薄JDBCドライバ

役に立ちましたか?

解決

使用カレンダーへのアクセスの日データベースからは、この正確な理由です。のものを使用できる java.util.Date としてい:

@Temporal(TemporalType.TIMESTAMP)
@Column(name="activationDate")
public Date getActivationDate() {
    return this.activationDate;
}

java.util.Date ポイントを瞬時に時間のかんにかかわらず、タイムゾーン.カレンダーに使用できる形式の日付を特定のタイムゾーンまたはロケールです。

他のヒント

いったいいつになったら私の問題はJPAやタイムスタンプ.ってのみ oracleフォーラム とについては下記をご覧ください:

  • フィールドにデータベースTIMESTAMP_TZだけではなくタイムスタンプ
  • 試しアノテーションの追加@時間(value=TemporalType.タイムスタンプ)
  • の場合は不要なのかもしれませんのタイムゾーン、日付やタイムスタンプ。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top