Hibernate char列到枚举

时间:2017-06-14 17:22:46

标签: java hibernate enums entity varchar

我有专栏'性别'作为VARCHAR(1)/ CHAR。 如何解析价值观" M" /" F"不使用

在@Entity类中使用值(MALE,FEMALE)的java枚举
@Column(name="gender")
private Character cGender;

并手动将其转换为枚举对象?

3 个答案:

答案 0 :(得分:3)

您需要提供自己的转换器:

@Convert(converter = GenderConverter.class)
@Column(name="gender")
private Gender gender;

然后实施

public class GenderConverter implements AttributeConverter<Gender, Character> {
    @Override
    public Character convertToDatabaseColumn(Gender from) {

        Character value = 'm';

        if (from == Gender.FEMALE) {
            value = 'f';
        }

        return value;
    }

    @Override
    public Gender convertToEntityAttribute(Character to) {
        Gender g = Gender.MALE;
        if ('f' == to)
            g = Gender.FEMALE;
        }
        return g;
    }
}

答案 1 :(得分:0)

对于枚举,您可以使用枚举类型来使用字符类型,例如:

@Enumerated(EnumType.STRING)
@Column(name = "GENDER")
private Gender gender; 

答案 2 :(得分:0)

除了@Alexey Soshin的回答: 此外,可以在转换器类上添加@Converter(autoApply = true),之后Hibernate将自动转换所有Gender字段(不需要@Convert(converter = GenderConverter.class))。