¿Es posible escribir un convertidor de enumeración genérico para JPA?

Quería escribir un convertidor para JPA que almacene cualquier enumeración como MAYÚSCULAS. Algunas enumeraciones que encontramos aún no siguen la convención de usar solo letras mayúsculas, por lo que hasta que se refactoricen, aún almaceno el valor futuro.

Lo que llegué hasta ahora:

package student;

public enum StudentState {

    Started,
    Mentoring,
    Repeating,
    STUPID,
    GENIUS;
}

Quiero que "Iniciado" se almacene como "INICIADO", etc.

package student;

import jpa.EnumUppercaseConverter;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

@Entity
@Table(name = "STUDENTS")
public class Student implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long mId;

    @Column(name = "LAST_NAME", length = 35)
    private String mLastName;

    @Column(name = "FIRST_NAME", nullable = false, length = 35)
    private String mFirstName;

    @Column(name = "BIRTH_DATE", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date mBirthDate;

    @Column(name = "STUDENT_STATE")
    @Enumerated(EnumType.STRING)
    @Convert(converter = EnumUppercaseConverter.class)
    private StudentState studentState;

}

el convertidor actualmente se ve así:

package jpa;


import javax.persistence.AttributeConverter;
import java.util.EnumSet;

public class EnumUppercaseConverter<E extends Enum<E>> implements AttributeConverter<E, String> {

    private Class<E> enumClass;

    @Override
    public String convertToDatabaseColumn(E e) {
        return e.name().toUpperCase();
    }

    @Override
    public E convertToEntityAttribute(String s) {
        // which enum is it?
        for (E en : EnumSet.allOf(enumClass)) {
            if (en.name().equalsIgnoreCase(s)) {
                return en;
            }
        }
        return null;
    }

}

lo que no funcionará es que no sé qué será enumClass en tiempo de ejecución. Y no pude encontrar una manera de pasar esta información al convertidor en la anotación @Converter.

Entonces, ¿hay alguna manera de agregar parámetros al convertidor o hacer un poco de trampa? ¿O hay otra manera?

Estoy usando EclipseLink 2.4.2

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta