Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate char column to enum

I have column 'gender' as a VARCHAR(1)/CHAR. How to parse values "M"/"F" to java enum with values (MALE, FEMALE) in @Entity class without using

@Column(name="gender")
private Character cGender;

and converting it manually to enum object?

like image 242
Vadym Borys Avatar asked Feb 16 '26 02:02

Vadym Borys


1 Answers

You need to provide your own converter:

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

Then implement it

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;
    }
}
like image 135
Alexey Soshin Avatar answered Feb 18 '26 14:02

Alexey Soshin