Hibernate上的字符串枚举

时间:2015-11-24 13:38:33

标签: java hibernate enums

我有一个关于将枚举插入VARCHAR字段的问题。 这是我的枚举:

public enum StatusPesquisaEnum {

    ATENDIDO("A"),
    ESPERA("E"),
    EMATENDIMENTO("EA"),
    NAOATENDIDO("NA");


    private StatusPesquisaEnum(String codigo){
        this.codigo = codigo;
    }

    private final String codigo;

    public String getCodigo() {
        return codigo;
    }

}

我想将AEEANA插入数据库。 此外,我尝试过转换器:

@Converter(autoApply = true)
public class StatusPesquisaEnumConverter 
        implements AttributeConverter<StatusPesquisaEnum, String> {

    @Override
    public String convertToDatabaseColumn(StatusPesquisaEnum status) {
        return status.getCodigo();
    }

    @Override
    public StatusPesquisaEnum convertToEntityAttribute(String codigoStatus) {
        return StatusPesquisaEnum.valueOf(codigoStatus);
    }
}

它被映射为:

@Column(name = "str_status")
@Enumerated(EnumType.STRING)
@Convert(converter=StatusPesquisaEnumConverter.class)
private StatusPesquisaEnum statusPesquisa;

但它正在将ATENDIDOESPERAEMATENDIMENTONAOATENDIDO插入数据库。

1 个答案:

答案 0 :(得分:3)

删除@Enumerated,因为这与自定义转换器冲突:

@Column(name = "str_status")
@Convert(converter = StatusPesquisaEnumConverter.class)
private StatusPesquisaEnum statusPesquisa;