Amikor egy egyedosztály úgy használ tulajdonság hozzáférést, hogy annotációkat helyez el a lekérdező és beállító metódusokon, akkor egy mező tárolásához a lekérdezős és beállító metódusokat egyaránt meg kell határozni. Az annotációval megjelölt lekérdező metódusokat, amelyekhez nem tartozik beállító metódus, az OpenJPA figyelmen kívül hagyja, míg ebben a helyzetben az EclipseLink egy kivételt dob.
Ez a szabály megjelöli a tulajdonság hozzáférő mezőket, amelyekben vannak annotációval ellátott lekérdező metódusok, de a beállító metódus hiányzik. Tekintse át az egyedmeghatározást, és módosítsa, hogy a szándéknak megfelelően viselkedjen. Ha azt szeretné, hogy a JPA szolgáltató figyelmen kívül hagyja a mezőt, akkor távolítsa el a lekérdező metódusok annotációit. Ha azt szeretné, hogy a mező tárolva legyen, akkor adjon hozzá egy beállító metódust.
A következő egyedosztályban a szabály megjelöli a getVersion
metódust.
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; } // Ez a lekérdező metódus nincs ellátva annotációval, ezért nincs megjelölve. public long getTime() { return time; } // Ez a lekérdező metódus meg van jelölve, mert tartalmaz annotációt, és nincs beállító metódus. @Version public double getVersion() { return 2.0; } public MissingSetter2() { time = 0; } } |
A problémával és más OpenJPA - EclipseLink átállítási problémákkal kapcsolatos információkért tekintse meg az OpenJPA - EclipseLink JPA átállítás: Leképezések útmutatót.