将枚举字符串属性保存到数据库中

问题描述 投票:0回答:1

我在java中有枚举

public enum Day {
    MONDAY("D1", "X"),
    TUESDAY("D2", "X"),
    WEDNESDAY("D3", "X"),
    THURSDAY("D4", "X"),
    FRIDAY("D5", "X"),
    SATURDAY("D6", "X"),
    SUNDAY("D7", "Y");

    private final String value;
    private final String value2;

    Day(String value, String value2) {
        this.value = value;
    this.value2 = value2
    }

    public String getvalue() {
        return value;
    }

    public String getvalue2() {
        return value2;
    }
}

在我的休眠实体中

  @Column(name = "day", nullable = false, length = 50)
    @Enumerated(EnumType.STRING)
    private Day day; 

在 postgres 数据库上,它保存星期一,但我想要 D1。 我尝试了 EnumType.String 但我猜我还需要其他东西

java postgresql hibernate
1个回答
0
投票

您可以实现一个 AttributeConverter 类,然后用

注释您的枚举

@Convert(转换器 = DayConverter.class)

例如。 (第二个功能还需要一些工作)

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

    @Override
    public Integer convertToDatabaseColumn(Day day) {
        return day.getValue();
    }

    @Override
    public Day convertToEntityAttribute(String databaseValue) {
        return MONDAY;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.