从某些 java.sql 属性移除 Temporal 注释

OpenJPA 会持久保存类型为 java.sql.Datejava.sql.Timejava.sql.Timestamp 且包含 javax.persistence.Temporal 注释的属性的字段,而 EclipseLink 抛出异常。

该规则将扫描以查找不需要转换数据而且必须移除 Temporal 注释以避免 EclipseLink 错误的以下注释属性组合:

对于需要转换器类来更改数据库与实体对象之间的数据的情况,请参阅针对某些 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;

此规则的快速修订会移除 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 指南。