使用Hibernate保存enum id而不是ordinal值

时间:2014-06-17 15:29:43

标签: java hibernate enums

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

0 个答案:

没有答案