gpt4 book ai didi

java - 如何在java中进行整数枚举声明

转载 作者:行者123 更新时间:2023-12-01 17:41:24 25 4
gpt4 key购买 nike

我的问题如下:

我想创建一个带有 int 枚举的实体“grade”(我使用 spring boot 和 hibernate 创建我的数据库表)enter image description hereenter image description here你能帮我一下吗?

最佳答案

enum 值必须是标识符,因此您不能执行以下操作:

enum grade { 1, 2, 3, 4 }

你可以这样做:

enum Grade { G1, G2, G3, G4 }

但是,您可以将它们打印为 1、2、3 和 4:

enum Grade {
G1(1), G2(2), G3(3), G4(4);

private final int number;

private Grade(int number) {
this.number = number;
}

public int getNumber() {
return this.number;
}

@Override
public String toString() {
return Integer.toString(this.number);
}

public static Grade of(int number) {
return Stream.of(Grade.values())
.filter(g -> g.getNumber() == number)
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Invalid grade number: " + number));
}
}
<小时/>

更新

要使用 JPA 2.1+ 保留这样的枚举,请按照 section 4 中所示进行操作。文章Persisting Enums in JPA | Baeldung .

@Converter(autoApply = true)
public class GradeConverter implements AttributeConverter<Grade, Integer> {

@Override
public Integer convertToDatabaseColumn(Grade grade) {
if (grade == null)
return null;
return grade.getNumber();
}

@Override
public Grade convertToEntityAttribute(Integer number) {
if (number == null)
return null;
return Grade.of(number);
}
}

关于java - 如何在java中进行整数枚举声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60668928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com