Soru JPA - Hiçbir değerlendirme için bulunamadı: enum


Özelliklerden biri için bir enum türü kullanan bir varlık sınıfım var ve varlığı sürdürmeye çalıştığımda aşağıdaki özel durumu alıyorum:

javax.validation.UnexpectedTypeException: No validator could be found for type: model.schema.BaseYesNo

Bunun neden olabileceği hakkında bir fikrin var mı? Benim düşüncem, bir enum olduğu için, derleyici tarafından zaten doğrulanmalı, bu yüzden bir çeşit doğrulayıcıya gerek yok. (aşağıdaki kod)

İşletme özelliği:

@Enumerated( EnumType.STRING )
@Column( name = "seeded_flag" )
private BaseYesNo seededFlag;

public BaseYesNo getSeededFlag() {
    return this.seededFlag;
}

public void setSeededFlag( BaseYesNo seededFlag ) {
    this.seededFlag = seededFlag;
}

Ve enum türünün tanımı:

public enum BaseYesNo {
    YES( "Y" ),
    NO( "N" );

    private String yesNoVal;

    private static Map< String, BaseYesNo > stringToEnum = new HashMap< String, BaseYesNo >();

    static {
            for ( BaseYesNo byn : BaseYesNo.values() ) {
            BaseYesNo.stringToEnum.put( byn.toString(), byn );
        }
    }

    BaseYesNo( String yesNoVal ) {
        this.yesNoVal = yesNoVal;
    }

    public static BaseYesNo fromString( String dbValue ) {
        return BaseYesNo.stringToEnum.get( dbValue );
    }

    @Override
    public String toString() {
        return this.yesNoVal;
    }
}

22
2017-08-04 06:30


Menşei




Cevaplar:


Seninle aynı hatayı aldım. Benimki ile ilgili sorun yanlışlıkla yerleştirilmişti @Size enum mülkümde:

public class PhoneNumber {
  @Size(max=30) //ERROR: this validation annotation is what caused my error
  @Nonnull
  @Enumerated(EnumType.STRING)
  private Type type;
  @Size(max = 30)
  @Nonnull
  private String number;

  public enum Type {
    Cell, Home, Work, Other
  }
}

Hatalı bir kez kaldırdım @Size, hatam gitti.

@Enumerated benim için sorun çıkarmadı ve şüpheliyim @Column olur. Belki de benim yaptığım gibi gözden geçirdiğiniz başka bir doğrulama ek bilginiz vardı.

Testlerim için kullanıyordum hibernate-validator-4.1.0-Final.jar


39
2018-03-15 16:40



Bu tür bir sorun, int veri türü için gerçekleştirilebilir ve @Size annotaionu kullanılır. - shohan
teşekkürler, günümü kurtardın! - Masterfego


Aynı durumla karşılaştım, ama int ile No için doğrulayıcı bulunamadı mesajı ile. Web'de arama yapma Bazı çözümler buldum, bunların çoğu Intler yazarak int türünü değiştirmeye odaklanıyor, çünkü Integer türü nulls kabul ediyor. burada olduğu gibi: Doğrulama - Boş int alanı

maalesef bu benim için çalışmadı. ama @Min ve @Max ile @ boyutu değiştirdiğimde her şey harika geçti. Bu umarım size bir el verir.


1
2018-06-23 19:39





Seninle aynı hatayı aldım ama mesaj "Hiçbir validator tür için bulundu: java.lang.Long. Ben önceki çözümü görene kadar kod gözden geçirme çok zaman harcadım ve bu yüzden, ben kaldırıldı herşey Giriş kodundan @Size girişleri ve ayrıca sorun giderildi. Gerçekte, kaynak kodundaki sorunlu satırın hangisi olduğunu öğrenmeliyim, ancak başka bir daha geliştirici dostu platformdan (IBM i Series) geliyoruz. Hata mesajlarının daha iyi ve doğru nedenler vermesini bekleyene kadar bekleyeceğim.


-2
2017-08-29 02:32