繁体   English   中英

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

[英]Hibernate Exception: Unknown name value for enum class

尝试从DB中检索记录时,我收到枚举类的未知名称值。 使用JSF 2.0,JPA。

我的数据库中的可能值是'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,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM