OpenJPA 會持續保存屬性類型為 java.sql.Date、java.sql.Time 或 java.sql.Timestamp 且具有 javax.persistence.Temporal 註釋之屬性的欄位,而 EclipseLink 則會擲出異常狀況。
此規則會掃描下列註釋/屬性組合,其不需轉換資料但必須移除 Temporal 註釋來避免 EclipseLink 錯誤:
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 註釋取代為 Converter 規則。
在下例中,此規則在所有情況下都會標示 @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;
自動修正將移除「 時間 」註解。
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 至 EclipseLink JPA 移轉:對映手冊。