我發現這個implementation,基本上做我想要的。如何在hibernate-validator中創建一個可選/可空屬性?
@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)
var middleName: String? = null,
我也試過
@field:NullOrNotBlank
@field:Size(max = 50)
@field:Column(nullable = true)
var middleName: String? = null,
但這種複合材料的限制使得在數據庫(MySQL的)不能爲空場。所以會發生什麼,直到我將實體保存到數據庫才能正常工作。
NullOrNotBlank'的'生成列是'不NULL'會拋出時,我將與空財產 – jasperagrante
嗨,我想你試着使用'hbm2ddl.auto'更新約束的實體錯誤在一列中。如果該列存在,它根本不會更新約束。所以你應該手動更新它。請看這裏:https://stackoverflow.com/questions/15978368/hibernate-hbm2ddl-auto-update-doesnt-update-column-definitions-in-mysql/26681592 –
現在呢?如果沒有問題。你應該刪除你的問題,因爲它是重複的。 –