OpenJPA では、javax.persistence.Temporal アノテーションを持つ java.sql.Date 型、java.sql.Time 型、または java.sql.Timestamp 型の属性のフィールドは永続化されるのに対し、EclipseLink では例外がスローされます。
この規則は、データを変換する必要がなく、EclipseLink エラーを避けるため Temporal アノテーションを削除する必要のある、以下のアノテーションと属性の組み合わせをスキャンします。
java.sql.Date 属性上の javax.persistence.Temporal(TemporalType.DATE) アノテーションjava.sql.Date 属性上の javax.persistence.Temporal(TemporalType.TIME) アノテーションjava.sql.Time 属性上の javax.persistence.Temporal(TemporalType.DATE) アノテーションjava.sql.Time 属性上の javax.persistence.Temporal(TemporalType.TIME) アノテーションjava.sql.Time 属性上の javax.persistence.Temporal(TemporalType.TIMESTAMP) アノテーション
java.sql.Timestamp 属性上の javax.persistence.Temporal(TemporalType.TIMESTAMP) アノテーションデータベースとエンティティー・オブジェクト間でデータを変更するためにコンバーター・クラスが必要となる場合については、一部の java.sql 属性で Temporal アノテーションをコンバーターに置換する規則を参照してください。
以下の例で、この規則はすべてのケースの @javax.persistence.Temporal アノテーションにフラグを立てます。
@javax.persistence.Temporal(TemporalType。DATE) private java.sql.Date dateDate; @javax.persistence.Temporal(TemporalType。TIME) private java.sql.Date dateTime; @javax.persistence.Temporal(TemporalType。DATE) private java.sql.Time timeDate; @javax.persistence.Temporal(TemporalType。TIME) private java.sql.Time timeTime; @javax.persistence.Temporal(TemporalType。TIMESTAMP) private java.sql.Time timeTimestamp; @javax.persistence.Temporal(TemporalType。TIMESTAMP) private java.sql.Timestamp timestampTimestamp;
自動修正により、 Temporal アノテーションは削除される。
private java.sql.Date dateDate; private java.sql.Date dateTime; private java.sql.Time timeDate; private java.sql.Time timeTime; private java.sql.Time timeTimestamp; private java.sql.Timestamp timestampTimestamp;
この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。