在运行时从 db 枚举为 jpa 枚举生成值
Posted
技术标签:
【中文标题】在运行时从 db 枚举为 jpa 枚举生成值【英文标题】:Generate values from db enum for jpa enum at runtime 【发布时间】:2013-06-24 02:17:17 【问题描述】:我在互联网上看到了将 postgresql 枚举映射到 java 枚举的方法。但是当我修改数据库中的枚举时,我所看到的所有方法都表现不佳。我想要做的是在运行时通过查询数据库或类似的东西来创建java枚举值。最好如何进行? 例如在数据库中我有枚举 'a','b','c','d' 并且有一天我设法将它在数据库中更改为 'a','x','d' ,'e'。有什么好的方法可以确保我不会在 java 中遇到 enum 的一致性问题。(显然手动更新是我的最后选择)。如果重要的话,我使用的是 9.1 之前的 pg 数据库
【问题讨论】:
【参考方案1】:如果您要更新枚举定义,那么您不应该使用枚举。使用带有外键引用的查找表。
枚举确实适用于您不希望枚举发生变化的情况,以及当它们发生变化时您准备做重要工作的情况。在这种情况下,如果您更改枚举的定义,则必须更新所有使用该枚举的代码是完全合理的。
【讨论】:
以上是关于在运行时从 db 枚举为 jpa 枚举生成值的主要内容,如果未能解决你的问题,请参考以下文章