我有一个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