gpt4 book ai didi

java - hibernate 异常 : Unknown name value for enum class

转载 作者:太空狗 更新时间:2023-10-29 22:40:01 25 4
gpt4 key购买 nike

尝试从数据库中检索记录时,我得到枚举类的未知名称值。使用 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;
}

当我尝试从数据库中读取记录时出现错误

你能帮我解决这个问题吗?谢谢

堆栈跟踪:

javax.servlet.ServletException: Unknown name value for enum class br.com.aaa.xxx.entidade.TipoPessoa: F javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) br.com.aaa.filtro.FiltroEncode.doFilter(FiltroEncode.java:26) root cause

javax.ejb.EJBTransactionRolledbackException: Unknown name value for enum class 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,反之亦然。

关于java - hibernate 异常 : Unknown name value for enum class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com