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:enumクラスの名前の値が不明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は、enum内のidフィールドを知りません。それが知っているのは、序数値(0と1)と名前(FISICAとJURIDICA)だけです。 FとJを永続化するには、2つの列挙型定数の名前をFとJに変更し、エンティティのフィールドに次のように注釈を付ける必要があります。
@Column(nullable=false, length=1)
@Enumerated(EnumType.STRING)
private TipoPessoa tipoPessoa;
または、カスタムユーザータイプを使用してFをFISICAに、またはその逆に変換します。