我有专栏'性别'作为VARCHAR(1)/ CHAR。 如何解析价值观" M" /" F"不使用
在@Entity类中使用值(MALE,FEMALE)的java枚举@Column(name="gender")
private Character cGender;
并手动将其转换为枚举对象?
答案 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))。