Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate保存枚举id而不是序号值_Java_Hibernate_Enums - Fatal编程技术网

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来比较它们。对于其他面临这个问题的人,我找到了一个更好的博客来解释如何解决这个问题。我用这种方法解决了我的问题。