【问题标题】:Can I apply @Enumerated(EnumType.STRING) once globally instead of on each enum?我可以在全局范围内而不是在每个枚举上应用一次 @Enumerated(EnumType.STRING) 吗?
【发布时间】:2020-11-16 06:21:46
【问题描述】:

我希望我的类中的所有枚举都由 JPA 作为字符串保存,而不是序数。我可以在全球某个地方声明吗?我正在使用 Spring Data JPA + Hibernate + postgresql。

【问题讨论】:

    标签: postgresql hibernate jpa spring-data-jpa


    【解决方案1】:

    答案是否定的

    枚举参数是编译时常量 - 无法在运行时更改它们,也无法制作“项目默认值”。

    奇怪的是,唯一明智的选择是STRING,主要是因为ORDINAL 很脆弱;你的枚举顺序永远被锁定(尽管数据手术),所以我不明白为什么默认是ORDINAL - 我从来没有听说过任何使用它的项目。

    【讨论】:

    • 对,确实应该有一些方法可以将默认值从序数更改为字符串。否则,您必须将 @Enumerated(EnumType.STRING) 放在每个枚举之前。烦人。
    • 稍微整洁一点:import static javax.persistence.EnumType.STRING; 然后只需在使用站点@Enumerated(STRING)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多