使用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