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. 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.