2017-07-16 8 views
1

私はこれが基本的に私が欲しいことをするimplementationを見つけました。hibernate-validatorでオプションの/ nullableプロパティを作成するには?

@ConstraintComposition(OR) 
@NotBlank 
@Null 
@ReportAsSingleViolation 
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER}) 
@Retention(RUNTIME) 
@Constraint(validatedBy = {}) 
public @interface NullOrNotBlank { 
    String message() default "{org.hibernate.validator.constraints.NullOrNotBlank.message}"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 
} 

と私はまた

@field:NullOrNotBlank 
@field:Size(max = 50) 
@field:Column(nullable = true) 
var middleName: String? = null, 

しかし、この複合制約は、データベース(MySQLの)NULL可能でないフィールドを作る試みた

@field:NullOrNotBlank 
@field:Size(max = 50) 
var middleName: String? = null, 

として使用します。ですから、エンティティをデータベースに保存するまでは正常に動作しています。

+0

NullOrNotBlank' 'の生成された列は、私はハイテク – jasperagrante

+0

ヌルプロパティを持つエンティティを挿入していたときにエラーがスローされます' NOT NULL'ですが、私はあなたが制約を更新するには、 'hbm2ddl.auto'を使用してみてくださいと思います列に列が存在する場合、制約はまったく更新されません。手動で更新する必要があります。こちらをご覧ください:https://stackoverflow.com/questions/15978368/hibernate-hbm2ddl-auto-update-doesnt-update-column-definitions-in-mysql/26681592 –

+0

それはどうですか?問題がなければ。質問が重複しているので、質問を削除する必要があります。 –

答えて

0

私は埋め込んだ後hibernate-validator私のtestsも失敗しました。がNULL可能列がhibernate-validator非NULL可能列に変更されなかったのはなぜ

@[ConstraintComposition(OR) NotBlank Null] 
//       ^---- it is a @NotNull constraint 

@NotNull 
public @interface NotBlank {...} 

方法へ:あなたはたとえば、列上の任意の非NULL可能制約を宣言した場合

hibernate-validator意志は、非NULL可能列に列を作りますこの問題を解決します?あなたはgithubの上で私のtestsを見てきましたのIF

は、あなたは多分、私は、その後、hibernate-validatorは、例えば、全く元の列の定義を変更することはできませんNULL可能制約がある@Lengthを使用したことが見つかりました:

@[ConstraintComposition(OR) Length(min = 1) Null] 
//it is a nullable constraint ---^ 
+0

あなたの答えをありがとう!私が実装したのは、 '@ Length'を' @Size(min = 1) 'に置き換えて他のデータ型にも適用できるようにしたことです。 – jasperagrante

+0

私は、私の古い実装が '@ NotBlank'制約を無視していることにも気付きました。 '@Size(min = 1)'に変更した後、違反の数が異常であると主張するテストが行​​われたためです。 – jasperagrante

+0

@ jasperagranteまったくありません。私は 'hibernate-validator'が昨夜DDLの定義を変更することに気付きました。 –

関連する問題