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 felismeri azokat a beágyazható osztályokat, amelyek Id annotációval rendelkező attribútumokat tartalmaznak, majd a szabály megjelöli az Id annotációkat attól függően, hogy talál-e olyan entitást, 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 megjegyzés azonosítót el kell távolítani.
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 Nyilvános osztály MainEntity { @EmbeddedId privát EmbeddableObject eo;}
import javax.persistence.Embeddable; import javax.persistence.Id; @Embeddable nyilvános osztály EmbeddableObject { @Id privát int mező; ...}
A probléma megoldásához távolítsa el a @Id megjegyzést és az importálást.
import javax.persistence.Embeddable; import javax.persistence.Id; @Entity Nyilvános osztály MainEntity { @EmbeddedId privát EmbeddableObject eo;}
import javax.persistence.Embeddable; @Embeddable nyilvános osztály EmbeddableObject { privát int mező; ...}
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.