我更喜欢使用Ordinal,但这真的取决于使用情况。
举例:
你有一个枚举,用来保存你所有的用户状态,在这种情况下顺序无关紧要,你可以在未来添加更多状态(最好使用@Enumerated(EnumType.ORDINAL)):
public enum UserStates { ACTIVE, DELETED, PENDING }
但是现在,您有一个枚举,可以拯救太阳系中的植物(最好使用 @Enumerated(EnumType.STRING)):
public enum Planets {MERCURY,VENUS,EARTH,MARS,JUPITER,SATURN,URANUS,NEPTUNE,PLUTO,NINE}
现在想你想重新排序你的行星,@Enumerated(EnumType.ORDINAL) 你不能,因为你的数据库不能知道你的 Java 文件中的新顺序。
您可以使用 @Enumerated(EnumType.STRING) 重新排序您的 Plantes,因为您的 Planet 链接到枚举名称,而不是枚举顺序。
无论如何,您可以修改您的@Enumerated(EnumType.ORDINAL)enums,因为它们与订单相关联,但您不能更改您的@Enumerated(EnumType.STRING)enums,因为它们将像新枚举一样使用。
字符串类型在数据库中更具可读性,但会比序数数据占用更多的大小。如果数据库被更多客户使用,也许会有用,但最好有一个好的软件文档,而不是保存 1000 倍于“EARTH”而不是“4”
USERSTATE
------------
ID | STATE |
------------
1 | 1
2 | 2
3 | 1
Planets
------------
ID | Name |
------------
1 | EARTH
2 | EARTH
3 | MARS
4 | EARTH