不幸的是只有两个EnumType
STRING
和ORDINAL
。使用时ORDINAL
,在大型项目中存在更改或删除值的危险,因此一切都会中断。我想要第三种类型NUMBER
,我们将在其中创建Enum
s 并传递应该用于数据库中记录值的数字。例如
public enum AnyType {
TREE(0), // ну или TREE(0, значения которые нужны для конструктора
CAR(1);
private final int number;
private final int age;
AnyType(int number, int age) {
this.number = number;
this.age = age;
}
并JPA
用作getNumber
将用作的值,ORDINAL
但在更改时可能会破坏的可能性较小Enum
。在获取和写入数据时如何实现或如何使用它@Enumerated(EnumType.STRING)
来提高性能?
javax.persistence.AttributeConverter
为 type创建您自己的实现AnyType
。它必须
AnyType
使用 中的属性与数字相互number
转换AnyType
。然后将此转换器分配给相应的字段或全局分配@Converter(autoApply = true)
。或多或少是这样的?
然后
AnyType.TREE.getAge()
- 将保证与您的序号匹配,同时不会返回TREE
到数据库。