如何在Hibernate中保留Enum的特定属性?

时间:2015-03-13 13:02:37

标签: java hibernate enums

我在辅助bean中有一个enum属性,它有2个属性:" id" (int属性)和"标签" (字符串属性)。在DB中我只需要保留" id",但我仍然需要在我的视图上使用标签值。问题是:@Enumerated只允许我使用EnumType.ORDINAL或EnumType.STRING持久化。有任何方法可以坚持enum的#id; id" DB中的属性? (顺便说一下......我正在使用Hibernate)。

谢谢!

2 个答案:

答案 0 :(得分:1)

fd的评论已经到位。然而,如果你真的需要这个,你可以调整一下解决方案,而不是坚持枚举,你可以将它标记为 transient 并添加一个属性,例如enumId到实体类,您将坚持使用。唯一剩下的就是通过enumId

的getter和setter方法同步枚举值

答案 1 :(得分:0)

id和属性是同一件事的两个方面。它们具有相同的含义。将它们存储在数据库中是多余的,并且违反了数据库设计的第三范式。

对于JPA(Hibernate)实体,我建议您将ORDINAL(它是id)定义为您的字段,并按照" Master Slave"将String定义为瞬态。然后定义@PostLoad和id的setter,使用name()将ordinal转换为名称(这是你的标签),并在标签的setter中使用valueOf(String name)转换回来。