在 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 陳述式。
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference; } |
如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。