Tengo una Categoría de Hibernación modelo:

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

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "type")
    private String type;

que tienen un tipo de campo de cadena de caracteres. También tengo un Java enum, que representan un tipo de categoría:

public enum CategoryType {
    INCOME, OUTCOME;
}

que me gustaría usar en lugar del tipo de cadena. El SQL acepta dos valores distintos en el varchar parámetro: ya sea CategoryIncome o CategoryOutcome. Me gustaría que el modelo de Categoría de clase para que acepte una enumeración de variables y mapa de alguna manera a la cadena de hibernación cuando se lo pide.

Es posible?

InformationsquelleAutor ducin | 2013-04-13

1 Comentario

  1. 153

    Sí, es posible. Debe ser:

    @Enumerated(EnumType.STRING)
    @Column(name = "category_type")
    private CategoryType categoryType;
    • Usted puede incluso ir más lejos y, ahora, como JPA 2.1 se publicó, el uso de @Converter(autoApply = true) public class CategoryTypeConverter implements javax.persistence.AttributeConverter <CategoryType, String>
    • Para cualquiera que pueda tener el mismo problema..: tuve que poner esta anotación a mi método getter lugar del campo, como este: @Enumerated(EnumType.STRING) public CategoryType getCategoryType() { return this.categoryType; }.
    • Yo estaba en hibernate.ddl-auto=update modo y tuve que dejar a mi mesa y deja hibernar crear de nuevo en el fin de convertir mi enumeración de int a varchar. Espero que ayude a alguien con un problema similar.
    • Consulte stackoverflow.com/questions/44864675/… si su valor de enumeración se escribe como ordinal Enumerados a pesar de la anotación.

Dejar respuesta

Please enter your comment!
Please enter your name here