2013-06-12 11 views
23

は、私は私のデータベース内の情報を更新する必要があります。javax.servlet.ServletException:HV000030:いいえバリデータはタイプに見つかりませんでした:java.lang.Integerの

FacadePatient.javaクラスコード:

public Patient update(Patient p) { 

    Patient pat = em.find(Patient.class, p.getPatientId()); 
    p.setPatientPhone(pat.getPatientPhone()); 
    p.setPatientDateNaiss(pat.getPatientDateNaiss()); 
    p.setPatientEmail(pat.getPatientEmail()); 
    p.setPatientJob(pat.getPatientJob()); 
    p.setPatientSmoking(pat.getPatientSmoking()); 
    p.setPatientSize(pat.getPatientSize()); 
    em.merge(pat); 
    return p; 
} 
+0

問題はありますか、バリデータ例外が発生しているか、どこから開始するのかわからないのですか? – JoshDM

+0

このエラーが発生します:javax.validation.UnexpectedTypeException:HV000030:タイプのバリデータが見つかりませんでした:java.lang.Integer、 –

+0

属性タイプを整数から文字列に変更しましたが、同じエラー –

答えて

97

HV000030:いいえバリデータが型に対して見つかりませんでした:あなたはJSR303豆の検証を使用する場合はjava.lang.Integer

はどうなることHibernate Validatorのフレーバーであり、JPAエンティティでIntegerプロパティのHibernate固有の@NotEmptyを持っています:

@NotEmpty 
private Integer some; 

これは完全に間違っています。整数はstring, collection, map or arrayとはみなされません。代わりに標準@NotNullを使用してください。

@NotNull 
private Integer some; 

具体的な問題は、JSFとは完全に無関係です。将来的には、可能な限りノイズを排除し、具体的な問題を特定する方法を学びましょう。 JPAコードを個別に実行します。 JSFはここのHTTP/MVCメッセンジャーに過ぎず、PrimeFacesは単にHTML/CSS/jQuery/UIコードジェネレータです。

+1

私は別の(しかし非常にばかばかしい)シナリオで同じエラーを実行します: '@Pattern(regexp =" [1-9] [0-9] {9} "、 \t \t \t message ="電話数字は)「 \tプライベートint型にphoneNumber 10桁の数字です; ' - >単にによって訂正:'プライベート文字列にphoneNumber; ' –

+0

同じエラーが@size(最大= 2)で発生します。何らかの理由で、Apache MyFaces 2.2はJSFアプリケーションのアラート・ボックスにエラーを表示しますが、OracleのMojarraはそうではありません。 –

+0

@Stephan:** ajax **リクエスト(サーバログをチェック!)中に例外がスローされたときに起こります。 Mojarraは、開発段階で警告を表示します。この問題は現在質問されている問題とは無関係です。 a.oを参照してください。 http://stackoverflow.com/questions/27526753/exception-stack-trace-in-jsf-ajax-requests/ – BalusC

9

私は上記の回答に追加したいと思います。あなたはこのように例えば、いくつかのものを持っている場合 この例外もスローされます:

@Size(min = 1, max = 20) 
@Column(name = "ID") 
private int id; 
+0

同じ状況でこのエラーが発生しました。しかし、なぜこのエラーが発生しますか?以前は私のプロジェクトで働いていたからです。後で@Sizeのためにこのエラーが発生しました。 – Hema

0

あなたは以下のような事例でも、この問題を得ることができます。

@Size(max = 45, message = "Field 'SomeEntityClass.yourEnumType' cannot exceed 45 characters") @Column(length=45) 
@Enumerated(EnumType.STRING) 
private SomeEnumType yourEnumType; 

検証時(整数型である)「yourEnumType」の順序値は前方Hibernateはデータベースに値を格納する前に解決する文字列マッピングの処理されるからです。

関連する問題