ある問題に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.月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.タイムスタンプ)
- の場合は不要なのかもしれませんのタイムゾーン、日付やタイムスタンプ。