OpenJPA conserve les champs des attributs de type java.sql.Date, java.sql.Time ou java.sql.Timestamp qui comportent une annotation javax.persistence.Temporal, alors qu'EclipseLink génère une exception.
Cette règle recherche les combinaisons annotation-attribut suivantes dans lesquelles les
données n'ont pas besoin de conversion et l'annotation Temporal doit être
retirée pour éviter une erreur EclipseLink :
javax.persistence.Temporal(TemporalType.DATE) sur un attribut java.sql.Datejavax.persistence.Temporal(TemporalType.TIME) sur un attribut java.sql.Datejavax.persistence.Temporal(TemporalType.DATE) sur un attribut java.sql.Timejavax.persistence.Temporal(TemporalType.TIME) sur un attribut java.sql.Timejavax.persistence.Temporal(TemporalType.TIMESTAMP) sur un attribut java.sql.Time
javax.persistence.Temporal(TemporalType.TIMESTAMP) sur un attribut java.sql.TimestampPour les cas où une classe de convertisseur est nécessaire pour changer les données entre la base de données et l'objet d'entité, voir la règle Retirer l'annotation Temporal pour certains attributs java.sql.
Dans l'exemple suivant, cette règle marque l'annotation @javax.persistence.Temporal dans tous les cas.
@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;
Une correction automatique supprimera les annotations temporelles.
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;
Pour des informations sur ce problème et d'autres problèmes de migration d'OpenJPA vers EclipseLink, voir le guide OpenJPA to EclipseLink JPA Migration: Mappings.