A beágyazott osztályokat meg kell jelölni annotációval beágyazhatóként

A Java Persistence API (JPA) specifikáció szerint, ha egy egyed beágyaz egy osztályt az Embedded annotáció használatával, akkor a beágyazható osztályt egy Embeddable annotációval kell ellátni, és nem egy Entity annotációval. Az OpenJPA megvalósításban, amikor egy attribútum meg van jelölve az @Embedded annotációval, azonban a hivatkozott osztály @Entity annotációval van megjelölve az @Embeddable annotáció helyett, akkor az OpenJPA ezt az osztályt beágyazhatóként kezeli az osztály beágyazásával más egyedekbe, valamint az osztályt egyedként kezeli, és létrehoz egy táblát az osztály számára. Az EclipseLink kivételt dob ebben a helyzetben, mivel egy osztály vagy egyed lehet, vagy beágyazható.

Ez a szabály olyan @Embedded annotációkat keres, amelyek @Entity annotációval megjelölt osztályokra hivatkoznak. A szabály az annotációkat az elemzés hatókörétől függően jelöli meg, illetve attól függően, hogy az összes kapcsolódó osztályt megtalálja-e.

Ebben a példában a szabály megjelöli az @Entity annotációt az EmbeddableEntity osztályban.

   import javax.persistence.EmbeddedId; import javax.persistence.Entity;

   @Entity nyilvános osztály EmbeddedEntity {

      @Id privát int azonosító;

      @Embedded privát EmbeddableEntity ee;}
   import javax.persistence.Entity;

   @Entity nyilvános osztály EmbeddableEntity { privát int beágyazás

      ...}

A probléma megoldása érdekében kézzel vizsgálja meg az EmbeddableEntity osztály használatát annak ellenőrzéséhez, hogy az nincs-e haszálnatban egyedosztályként is, hogy mdóosíthassa az @Entity annotációt @Embeddable annotációra.

   import javax.persistence.Embeddable; import javax.persistence.Id;

   @Entity nyilvános osztály EmbeddedEntity {

      @Id privát int azonosító;

      @Embedded privát EmbeddableEntity ee;}
   import javax.persistence.Embeddable;

   @Embeddable nyilvános osztály EmbeddableEntity { 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.