Când un atribut este adnotat cu @ElementCollection,
este creat un tabel separat pentru atribut, care include ID-ul şi valoarea atributului.
În OpenJPA , coloana pentru atributul adnotat este numit element, întrucât EclipseLink numeşte coloana pe baza numelui de atribut. Pentru a rămâne compatibile cu tabele care au fost create cu OpenJPA,
adăugaţi o adnotare @Column cu un atribut name
setat la element.
Această regulă scanează pentru adnotările @ElementCollection care nu au
adnotarea @Column cu un atribut name.
O remediere automată va adăuga o adnotare @Column sau va edita o adnotare existentă @Column existentă care nu are un atribut nume.
De exemplu, regula semnalează adnotarea @ElementCollection în următoarea clasă entitate acces câmp
deoarece nu are o adnotare @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică ElementCollectionEntity { @Id int privat id; @ElementCollection privat List<Șir> listofStrings; }
O soluție automată va adăuga adnotarea @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică ElementCollectionEntity { @Id int privat id; @ElementCollection @Column(name = "element") privat List<Șir> listofStrings; }
Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.