Java 使用Hibernate保存枚举id而不是序号值
我有一个枚举,如下所示:Java 使用Hibernate保存枚举id而不是序号值,java,hibernate,enums,Java,Hibernate,Enums,我有一个枚举,如下所示: 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() {
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;
}
}
我在我的实体中使用此枚举,如下所示,还有一些附加字段:
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将保存为枚举的序号值。与此相反,我希望将id保存到DB
我该怎么做?请帮帮我
编辑
我仍然无法使用前面给出的解决方案来解决它。
但是找到了一个很好的教程来解决这个问题。为了他人的利益而分享
您应该通过向解析方法传递新的Long1L来对代码进行单元测试。这里应该使用一个基本long,而不是long。或者至少使用equals来比较它们。对于其他面临这个问题的人,我找到了一个更好的博客来解释如何解决这个问题。我用这种方法解决了我的问题。