Az OpenJPA esetén a java.util.Collection<E>
felületből öröklő attribútumok nem alapértelmezett perzisztencia
típusúak, így ezek az attribútumok csak akkor lesznek tárolva, ha
meg vannak jelölve annotációval.
Az EclipseLink alapértelmezett viselkedése eltérő, és megkísérli tárolni
ezeket az attribútumokat az adatbázisban.
Ha meg szeretné tartani az
OpenJPA viselkedést, amely figyelmen kívül hagyja az annotáció nélküli
gyűjtemény attribútumokat, akkor EclipseLink környezetben adja hozzá a
javax.persistence.Transient annotációt ezekhez az
attribútumokhoz.
Ez a szabály megjelöli a JPA annotációkkal nem rendelkező attribútumokat,
amelyek a java.util.Collection<E> felülettől
öröklődnek, beleértve a következő alfelületeket:
A következő Entity osztályban a szabály megjelöli a
collectionField és a listField attribútumokat.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; private List listField; } |
A gyorsjavítás hozzáadja a @Transient annotációt és az
import utasítást.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transient private List listField; } |
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.