如何处理java enum和数据库表之间的重复?

时间:2009-03-27 19:18:13

标签: java sql database orm enums

在我们的应用程序中,一个实体必须用枚举来表示:例如类型,类别,状态等等。

通常,代码中存在使用值来决定一个动作或另一个动作的条件或流程,因此必须以某种方式为应用程序“知道”值(即它必须能够引用一个特定的实例来决定而不是整体引用该类)。这就是我们使用枚举而不仅仅是常规类的原因。

问题是这些实体还需要作为其他实体的字段存储(或至少引用)在数据库中。我们通常为每个实体创建一个表,以便能够在这些列中进行参考完整性检查,并且数据在数据库中仅具有“含义”,而无需参考枚举来找出每个id的含义

理想情况下,应该从枚举中的数据填充这些实体的数据,但是现在我们在db初始化脚本中重复了这些值。

当使用像Hibernate这样的ORM时会变得有点复杂。

我想知道其他人如何处理这种情况。

我对枚举和数据库表之间存在重复的想法不太满意,但我还没有找到更好的解决方案。

2 个答案:

答案 0 :(得分:2)

尝试这个问题的答案:Ways to save enums in database

答案 1 :(得分:1)

我的JPA / Hibernate应用程序存在同样的问题。我所做的是在遇到数据库时动态创建枚举条目。在这里,它根据需要自动填充。