2013-07-05 22 views
12

DB'den kayıt almaya çalışırken enum sınıfı için bilinmeyen ad değeri alıyorum. Jsf 2.0'ı kullanarak jpa. Benim DBHazırda Bekletme Durumu: enum sınıfı için bilinmeyen ad değeri

olası değerler 'F' veya 'J'

Enum şunlardır:

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; 
    } 
} 

varlık: Ben okumaya çalışın

@Column(nullable=false, length=1) 
private TipoPessoa tipoPessoa; 

public TipoPessoa getTipoPessoa() { 
    return tipoPessoa; 
} 

public void setTipoPessoa(TipoPessoa tipoPessoa) { 
    this.tipoPessoa = tipoPessoa; 
} 

DB kayıtları kayıtları aldım

Lütfen bu konuda bana yardımcı olur musunuz? teşekkürler

Yığın izleme:

javax.servlet.ServletException: enum sınıfı br.com.aaa.xxx.entidade.TipoPessoa için Bilinmeyen ad değeri: F javax.faces.webapp.FacesServlet.service (FacesServlet.java:606) br.com.aaa.filtro.FiltroEncode.doFilter (FiltroEncode.java:26) kök neden

javax.ejb.EJBTransactionRolledbackException: enum sınıfı br.com.aaa için Bilinmeyen ad değer. xxx.entidade.TipoPessoa: F .... ......

+0

stacktrace sayfasını göster – surfealokesea

+0

Eşlemeyi yanlış yapıyorsunuz. Hazırda bekleme, enum türünü nasıl eşleyeceğini nasıl bilmelidir? Bakınız örn. [Bu SO soru] (http://stackoverflow.com/questions/417062/enumerations-in-hibernate). –

+0

@surfealokesea stacktrace soruda güncellendi. – Al2x

cevap

17

Hazırda bekletme, numaranızdaki kimlik alanını bilmiyor ve önemsiyor. Tüm bildiği sıra değeri (0 ve 1) ve adı (FISICA ve JURIDICA). Eğer F ve J kalıcı olmasını isterseniz, sen F ve J için iki enum sabitlerini adlandırmak zorunda ve böyle bir varlık alanına açıklama edeceğiz:

@Column(nullable=false, length=1) 
@Enumerated(EnumType.STRING) 
private TipoPessoa tipoPessoa; 

veya F dönüştürmek için özel bir kullanıcı türünü kullanın FISICA'ya veya tam tersine.

+1

FISICA'yı F ve JURIDICA'ya J olarak mı yeniden adlandınız? Güncellenmiş kodunuzu bize göster. –

+0

Bu harika. Beklendiği gibi çalıştı. Ama tam isimleri F veya J yerine izin vermek için nasıl yapabilirim? – Al2x

+1

Özel bir kullanıcı türü kullanın: http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html_single/#types-custom –

İlgili konular