【发布时间】:2013-07-03 20:01:57
【问题描述】:
尝试从数据库中检索记录时,我得到了枚举类的未知名称值。使用 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 应该如何知道如何映射枚举类型?参见例如this SO question.
-
@surfealokesea 堆栈跟踪已在问题中更新。