Tengo el siguiente Hibernate modelo:

@Entity
@Table(name = "category")
public class Category {

    @Enumerated(EnumType.STRING)
    @Column(name = "type")
    private CategoryType type;

Esta es la enumeración que se hace referencia por hibernate:

public enum CategoryType {
    INCOME, OUTCOME;
}

La correspondiente base de datos de campo es un campo de tipo varchar que toma 2 valores posibles: «CategoryIncome» y «CategoryOutcome».

Este método llama a hibernar:

public List<Category> findAllByType(CategoryType type) {
    session = sessionFactory.openSession();
    tx = session.beginTransaction();
    Query query = session.createQuery(
        "FROM Category WHERE type = :type");
    query.setParameter("type", type);
    List list = query.list();
    tx.commit();
    session.close();
    return list;
}

Me las arreglé para conseguir mi código de trabajo (me refiero a que compila), pero funciona muy mal – se ejecuta la siguiente consulta SQL:

WHERE type = "INCOME"

mientras que a mi me gustaría ser:

WHERE type = "CategoryIncome"

¿Cómo puedo asignar valores de enumeración en la cadena de valores para hibernar? Sé que EnumType.STRING le dice a hibernate para lanzar la enumeración de los valores de cadena (podría ser EnumType.ORDINAL echarlo a enteros). Pero, ¿cómo puedo reemplazar el valor predeterminado enum-la asignación de una cadena?

InformationsquelleAutor ducin | 2013-04-16

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here