尝试从数据库检索记录时,我得到了枚举类的“未知名称”值。使用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:枚举类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,反之亦然。
我应该工作,对吧?但它不是!!!!它告诉我dbValue可以转换为RelationActiveEnum...
但我的代码不起作用,它说类型没有定义:
问题内容: 我想要一个Java枚举,其值是整数。 例如: 但是我也想要这两个常量的自定义名称, 例如“ Task Created”和“ Task Deleted”(那里有空格)。 我想尽可能优雅地做到这一点,而无需编写 太多额外的代码。 我可以在没有其他 将枚举常量映射到其自定义名称的映射的情况下实现此目标吗? 我在该项目中使用JDK 6。 问题答案: 只需为此添加一个字段: 如果您不想指定字符串
例如: Swagger这样显示枚举: 我想要的是: API返回“显示名称”,然而,Swagger显示“枚举名称”,这经常导致混淆。有可能改变狂妄的价值观吗?
在不使用其他映射( 将枚举常量映射到它们的自定义名称)的情况下,我能做到这一点吗? 我在这个项目中使用JDK6。
谁能解释一下 和 我经常使用前一个示例(可能太频繁了,没有足够的封装),但我从未使用过第二个示例。 谢啦 枚举