A Java Persistence API (JPA) specifikáció szerint ha egy
egyed meghatároz egy EmbeddedId annotációval
rendelkező attribútumot, akkor a beágyazható osztály nem
tartalmazhat egy Id annotációval rendelkező
attribútumot. Ha az EmbeddedId annotáció és az
Id annotáció egyaránt meg van határozva, akkor az OpenJPA
figyelmen kívül hagyja az Id annotációt, míg az EclipseLink
kivételt dob.
Ez a szabály Embeddable osztályokat keres, amelyek
tartalmaznak egy Id annotációt, és megjelöli az
Id annotációkat attól függően, hogy talál-e egy egyedet,
amely a beágyazható osztályra hivatkozik egy EmbeddedId
annotáció használatával.
EmbeddedId annotáció egy olyan beágyazható
osztályra hivatkozik, amelynek van egy Id annotációja, akkor
a szabály súlyos problémaként jelöli meg az Id
annotációt. Az Id annotáció eltávolításához
használhatja a gyorsjavítást.
EmbeddedId annotációval, akkor a szabály a problémát
figyelmeztetésként jelöli meg. Az elemzés
hatókörét kiterjesztheti, hogy tartalmazzon bármilyen
EmbeddedId annotációval rendelkező attribútumot, amely egy
beágyazható osztályra hivatkozhat, és újrafuttathatja az elemzést, vagy
kézzel ellenőrizheti, hogy nem hivatkoznak EmbeddedId
annotációk a beágyazható osztályokra.
Ebben a példában a szabály megjelöli az Id annotációt az
EmbeddableObject osztályban.
import javax.persistence.EmbeddedId; import javax.persistence.Entity; @Entity public class MainEntity { @EmbeddedId private EmbeddableObject eo; } |
import javax.persistence.Embeddable; import javax.persistence.Id; @Embeddable public class EmbeddableObject { @Id private int field; ... } |
A probléma megoldása érdekében a gyorsjavítás eltávolítja az
@Id annotációt az import utasításból.
import javax.persistence.Embeddable; import javax.persistence.Id; @Entity public class MainEntity { @EmbeddedId private EmbeddableObject eo; } |
import javax.persistence.Embeddable; @Embeddable public class EmbeddableObject { private int field; ... } |
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.