Rozhraní OpenJPA trvale uchovává pole atributů typu java.sql.Date, java.sql.Time nebo java.sql.Timestamp, které mají anotaci javax.persistence.Temk, zatímco EclipseLink generuje výjimku.
Toto pravidlo prochází následujícími kombinacemi anotace-atribut, kde není nutné převádět data, a proto musí být odebrána anotace Temporal, aby nedošlo k chybě EclipseLink:
javax.persistence.Temporal(TemporalType.DATE) v atributu java.sql.Datejavax.persistence.Temporal(TemporalType.TIME) v atributu java.sql.Datejavax.persistence.Temporal(TemporalType.DATE) v atributu java.sql.Timejavax.persistence.Temporal(TemporalType.TIME) v atributu java.sql.Timejavax.persistence.Temporal(TemporalType.TIMESTAMP) v atributu java.sql.Time
javax.persistence.Temporal(TemporalType.TIMESTAMP) v atributu java.sql.TimestampV případech, kdy je třeba ke změně dat mezi databází a objektem entity použít třídu převodníku, prostudujte si pravidlo Nahradit anotaci Temporal pomocí převodníku pro některé atributy java.sql.
V následujícím příkladu toto pravidlo značí anotaci @javax.persistence.TemTemk ve všech případech.
@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) soukromé java.sql.Time timeTimestamp; @javax.persistence.Temporal(TemporalType.TIMESTAMP) soukromé java.sql.Timestamp timestampTimestamp;
Automatická oprava odstraní časové anotace.
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;
Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.