當實體類別將註釋置於 getter 和 setter 方法來使用內容存取時,要持續保存的欄位必須同時定義 getter 方法和 setter 方法。 如果標註的 getter 方法未隨附 setter 方法,OpenJPA 會予以忽略;在這種狀況下,EclipseLink 則會擲出異常狀況。
此規則會標示內容存取欄位(其遺漏 setter 方法)的已標註 getter 方法。 請檢閱實體定義並加以修改,使其行為符合預期。 如果您要 JPA 提供者忽略此欄位,請移除 getter 方法的任何註釋。 如果您要持續保存此欄位,請新增 setter 方法。
在下列實體類別中,規則會標示 getVersion 方法。
package entities; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; import javax.persistence.Version; @Entity public class MissingSetter2 { private int id; private long time; public MissingSetter2 (int id) { this.id = id; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } // This getter is not annotated, so it is not flagged. public long getTime() { return time; } // This getter is flagged because it is annotated and there is no setter. @Version public double getVersion() { return 2.0; } public MissingSetter2() { time = 0; } } |
如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。