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.
Corecţia rapidă adaugă o adnotare @Column sau editează o adnotare
@Column existentă care nu are un atribut name.
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 public class ElementCollectionEntity { @Id private int id; @ElementCollection private List<String> listofStrings; } |
Corecţia rapidă adaugă adnotarea @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class ElementCollectionEntity { @Id private int id; @ElementCollection @Column(name = "element") private List<String> 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.