加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Hibernate异常:枚举类的未知名称值

发布时间:2020-12-14 05:43:38 所属栏目:Java 来源:网络整理
导读:当尝试从DB中检索记录时,我将获取枚举类的未知名称值.使用jsf 2.0,jpa. 我的DB中的可能值是’F’或’J’ 枚举: public enum TipoPessoa { FISICA ("F","Física"),JURIDICA ("J","Jurídica"); private final String id; private final String descricao; p
当尝试从DB中检索记录时,我将获取枚举类的未知名称值.使用jsf 2.0,jpa.

我的DB中的可能值是’F’或’J’

枚举:

public enum TipoPessoa {

    FISICA ("F","Física"),JURIDICA ("J","Jurídica");

    private final String id;
    private final String descricao;

    private TipoPessoa(String id,String descricao){
        this.id = id;
        this.descricao = descricao;
    }

    public String getId() {
        return id;
    }

    public String getDescricao(){
        return descricao;
    }
}

实体 :

@Column(nullable=false,length=1)
private TipoPessoa tipoPessoa;

public TipoPessoa getTipoPessoa() {
    return tipoPessoa;
}

public void setTipoPessoa(TipoPessoa tipoPessoa) {
    this.tipoPessoa = tipoPessoa;
}

当我尝试从DB中读取记录时,我收到错误

请问这个问题可以帮我吗谢谢

堆栈跟踪 :

javax.servlet.ServletException:枚举类的未知名称值br.com.aaa.xxx.entidade.TipoPessoa:F
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
br.com.aaa.filtro.FiltroEncode.doFilter(FiltroEncode.java:26)
根本原因

javax.ejb.EJBTransactionRolledbackException:枚举类的未知名称值br.com.aaa.xxx.entidade.TipoPessoa:F
….
……

解决方法

Hibernate不知道并关心你的枚举中的id字段.所有它知道的是序数值(0和1)和名称(FISICA和JURIDICA).如果要保留F和J,则必须将两个枚举常量重命名为F和J,并对实体中的字段进行注释:
@Column(nullable=false,length=1)
@Enumerated(EnumType.STRING)
private TipoPessoa tipoPessoa;

或使用自定义用户类型将F转换为FISICA,反之亦然.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读