java - Hibernate char 列枚举

标签 java hibernate enums entity varchar

我将“性别”列作为 VARCHAR(1)/CHAR。 如何在不使用@Entity类的情况下将值“M”/“F”解析为具有值(MALE,FEMALE)的java枚举

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

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

最佳答案

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

@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;
    }
}

关于java - Hibernate char 列枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551058/

相关文章:

java - 防止与spymemcached冲突

java - 使用 hibernate 从 oracle 读取 clob

validation - Javax 验证 Kotlin 中的自定义枚举约束

java - Netbeans - .properties 文件默认编码 |奇怪的行为

java - Notify() 不能与 Wait() 一起使用

java - 为 SpringBoot 应用程序指定 keystore 时,javax.net.ssl.keyStore 和 server.ssl.key-store 属性有什么区别

hibernate - 在删除实体之前,删除其父引用(如果有)

java - 与hibernate注解一对一关系

swift - Swift 中的字符串到枚举映射

c# - 公开基础库中定义的枚举类型