Az OpenJPA egy külön táblát hoz létre a gyűjtemény attribútumoknak,
amelyek meg vannak jelölve az
org.apache.openjpa.persistence.PersistentCollection
annotációval. Az azonos viselkedés eléréséhez az EclipseLink
megvalósításban, cserélje le ezeket az annotációkat a JPA specifikációban
meghatározott @ElementCollection és @Column
annotációkra. Ha eltávolítja a @PersistentCollection
annotációt és nem adja hozzá az @ElementCollection
és @Column annotációt, akkor az EclipseLink a mezőt
BLOB mezőként kezeli, és megpróbál létrehozni az adatok
számára egy oszlopot az egyed táblájában.
Ez a szabály megkeresi az
org.apache.openjpa.persistence.PersistentCollection
annotációkat, hogy kézzel átállíthassa azokat.
Az annotációk átállításához tegye a következőket:
@org.apache.openjpa.persistence.PersistentCollection
annotációt a következőre:
@javax.persistence.ElementCollection @javax.persistence.Column(name="element")Ha az attribútumhoz már meg van adva egy
@Column
annotáció, akkor ne adjon hozzá egy másikat és ne módosítsa a
nevet.
Például ez a szabály megjelöli a @PersistentCollection
annotációt a következő Entity osztályban:
import javax.persistence.Entity; import javax.persistence.Id; import org.apache.openjpa.persistence.PersistentCollection; @Entity public class IntArrayEntity{ @Id private int id; @PersistentCollection private int[] arrayOfInts; } |
Az egyed átállításához cserélje le az annotációt, és módosítsa az
int tömböt Integer objektumok listájára: List<Integer>.
import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class IntArrayEntity{ @Id private int id; @ElementCollection @Column(name="element") private List<Integer> arrayOfInts; } |
További információkért ezzel az OpenJPA - EclipseLink átállítási problémával kapcsolatban, tekintse meg az OpenJPA - EclipseLink áttérés: Kibővített funkcionalitás útmutatót.