Adnotările ElementCollection trebuie să fie acompaniate de o adnotare Column definită

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.