使用Hibernate保存枚举id而不是序数值

我有一个enum ,如下所示:

 public enum SocialType { Facebook(1L), LinkedIn(2L), Twitter(3L), Skype(14L), Blog(16L), Google(21L); private Long id; SocialType(Long id) { this.id = id; } public Long getId() { return id; } public static SocialType parse(Long id) { SocialType socialType = null; for (SocialType item : SocialType.values()) { if (item.getId() == id) { socialType = item; break; } } return socialType; } } 

我在我的实体中使用此enum如下(带一些其他字段):

 private SocialType socialType ; public SocialType getSocialType() { return SocialType.parse(this.socialType.getId()); } public void setSocialType(SocialType socialType) { this.socialType = socialType; this.socialType = SocialType.valueOf(socialType.name()); } 

当我使用Hibernate将实体保存到我的数据库时,值为SocialType被保存为Enum的Ordinal Value 。 而不是这个,我想将id保存到DB。

我怎样才能做到这一点 ? 请帮帮我。

编辑

我仍然无法使用之前给出的解决方案来解决它。 但是找到了一个如何解决这个问题的好教程。 为他人分享受益。

http://www.gabiaxel.com/2011/01/better-enum-mapping-with-hibernate.html