Registro de convertidores en JPA 2.1 con EclipseLink

En el entorno JavaEE, uso la implementación JPA 2.1 con EclipseLink,

Tengo algunas entidades que contienenenums. Así que he creado convertidores para estas enumeraciones.

Entidad del coche:

@Entity
public class Car implements Serializable {

    private static final long serialVersionUID = 6L;

    @Id
    private String      id;

    @Convert (converter = CarColorConverter.class)
    private CarColor    color;

    public enum CarColor {
        Black,
        Gray,
        White,
        Red
    };

    public Car () {
        id = GenerateUUID.id ();
    }

    ....
}

Convertidor CarColor:

@Converter (converterClass = CarColorConverter.class, name = "CarColorConverter") 
public class CarColorConverter implements AttributeConverter<CarColor, String> { 

    private static final String BLACK   = "Black";
    private static final String GRAY    = "Gray";
    private static final String WHITE   = "White";
    private static final String RED     = "Red";

    @Override
    public String convertToDatabaseColumn (CarColor entityData) {

        switch (entityData) {
            case Black:
                return BLACK;

            case Gray:
                return GRAY;

            case White:
                return WHITE;

            case Red:
                return RED;

            default:
                throw new IllegalArgumentException ("Unknown : " + entityData);
        }
    }

    @Override
    public CarColor convertToEntityAttribute (String dbData) {

        switch (dbData) {
            case BLACK:
                return CarColor.Black;

            case GRAY:
                return CarColor.Gray;

            case WHITE:
                return CarColor.White;

            case RED:
                return CarColor.Red;

            default:
                throw new IllegalArgumentException ("Unknown : " + dbData);
        }
    }
}

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence 
    version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

    <persistence-unit name="xyz-restful-api" transaction-type="RESOURCE_LOCAL">

        <!-- Converters -->
        <!--<class>com.xyz.model.converters.CarColorConverter</class>-->

        <!-- Entities / Model -->
        <class>com.xtz.model.Car</class>

        <properties>
            ...
        </properties>

    </persistence-unit>

</persistence>

CuandoYo comento la declaración del convertidor en el archivo persistence.xml e intento persistir mis entidades en la base de datos me sale este error: "Asegúrese de que el nombre de la clase del convertidor sea correcto y exista con la definición de la unidad de persistencia.". y sin excepción de tiempo de compilación, solo una advertencia bastante explícita:

La clase "com.xyz.model.converters.CarTypeConverter" está anotada, pero no aparece en el archivo persistence.xml

Sin embargo cuandoYo descomento la declaración del convertidor en el archivo persistence.xml, e intento persistir mis entidades en el DB me sale este error: "Asegúrese de que el nombre de la clase del convertidor sea correcto y exista con la definición de la unidad de persistencia.". y una excepción de tiempo de compilación:

La clase "com.xyz.model.converters.CarColorConverter" aparece en el archivo persistence.xml, pero no está anotada

¿Estoy declarando los convertidores de manera incorrecta?

Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta