Adnotacjom ElementCollection musi towarzyszyć zdefiniowana adnotacja Column

Kiedy atrybut ma adnotację @ElementCollection, jest dla niego tworzona oddzielna tabela zawierająca atrybut ID i jego wartość. W interfejsie OpenJPA kolumna dla atrybutu z adnotacją ma nazwę element, natomiast w interfejsie EclipseLink nazwy kolumn są oparte o nazwach atrybutów. Aby zachować zgodność z tabelami utworzonymi za pomocą interfejsu OpenJPA, należy dodać adnotację @Column z atrybutem name ustawionym na wartość element.

Ta reguła przeprowadza skanowanie w poszukiwaniu adnotacji @ElementCollection, które nie mają adnotacji @Column z atrybutem name. Szybka poprawka dodaje adnotację @Column lub modyfikuje istniejącą adnotację @Column, która nie ma atrybutu name.

Na przykład reguła powoduje oznaczenie adnotacji @ElementCollection w poniższej klasie jednostki dostępu do pola, ponieważ nie ma ona adnotacji @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;
}

Szybka poprawka dodaje adnotację @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;
}

Informacje na ten temat oraz na temat innych problemów z migracją interfejsu OpenJPA do interfejsu EclipseLink zawiera podręcznik Migracja interfejsu JPA ze środowiska OpenJPA do EclipseLink: Odwzorowania.