在 OpenJPA 中,本身是實體類別的屬性依預設並不會持續保存。
EclipseLink 有不同的預設行為,其會嘗試將這些屬性持續保存到資料庫中。
如果要維持 OpenJPA 忽略未標註之實體屬性的行為,請在 EclipseLink 中將 javax.persistence.Transient 註釋新增至這些屬性中。
此規則會標示屬於實體類別且沒有 JPA 註釋的屬性。
如果該工具找不到參照的類別,其會在 Eclipse 錯誤日誌中記載一則警告。 如果相依專案或類別無法存取或是有編譯錯誤,該工具可能會找不到類別。
自動修復將在屬性中加入 @Transient 註解。
在下列實體類別中,規則會標示 entityReference 欄位。
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; private EntityB entityReference;}
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityB { @Id private int id;}
自動修正將新增 @Transient 註解和匯入語句。
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference;}
如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。