实体字段条件不是强制性的
Entity field condition not to be mandatory
我有一个包含以下数据的表单:name
、description
、meta_title
、meta_keywords
、meta_description
。
在实体 class 中,我添加了以下验证:
@NotBlank(message = "{name.notblank}")
@Size(min = 2, max = 250, message = "{name.size}")
@Column( name = "pgs_name")
private String name;
@NotBlank(message = "{description.notblank}")
@Size(min = 10, message = "{description.size}")
@Column( name = "pgs_description")
private String description;
@Nullable
@Size(min = 2, max = 250, message = "{meta_title.size}")
@Column( name = "pgs_meta_title")
private String meta_title;
@Nullable
@Size(min = 2, max = 250, message = "{meta_keywords.size}")
@Column( name = "pgs_meta_keywords")
private String meta_keywords;
@Nullable
@Size(min = 2, max = 250, message = "{meta_description.size}")
@Column( name = "pgs_meta_description")
private String meta_description;
我想要的,例如,如果字段 meta_title
已完成,则检查条件:@Size(min = 2, max = 250, message = "{meta_title.size}")
是否得到遵守,否则如果没有完成,则没问题,数据库中的字段将为空。
问题是 hibernate 不关心 @Nullable
并且它会自动验证带有 @Size
注释的字段。
那么,我可以使用什么注释来解决我的问题?
谢谢!
您可以编写自定义验证注释和实现 ConstraintValidator
的 class。通过覆盖其 isValid
方法,您可以将自定义逻辑添加到自定义注释中。查看 this 示例。
我有一个包含以下数据的表单:name
、description
、meta_title
、meta_keywords
、meta_description
。
在实体 class 中,我添加了以下验证:
@NotBlank(message = "{name.notblank}")
@Size(min = 2, max = 250, message = "{name.size}")
@Column( name = "pgs_name")
private String name;
@NotBlank(message = "{description.notblank}")
@Size(min = 10, message = "{description.size}")
@Column( name = "pgs_description")
private String description;
@Nullable
@Size(min = 2, max = 250, message = "{meta_title.size}")
@Column( name = "pgs_meta_title")
private String meta_title;
@Nullable
@Size(min = 2, max = 250, message = "{meta_keywords.size}")
@Column( name = "pgs_meta_keywords")
private String meta_keywords;
@Nullable
@Size(min = 2, max = 250, message = "{meta_description.size}")
@Column( name = "pgs_meta_description")
private String meta_description;
我想要的,例如,如果字段 meta_title
已完成,则检查条件:@Size(min = 2, max = 250, message = "{meta_title.size}")
是否得到遵守,否则如果没有完成,则没问题,数据库中的字段将为空。
问题是 hibernate 不关心 @Nullable
并且它会自动验证带有 @Size
注释的字段。
那么,我可以使用什么注释来解决我的问题? 谢谢!
您可以编写自定义验证注释和实现 ConstraintValidator
的 class。通过覆盖其 isValid
方法,您可以将自定义逻辑添加到自定义注释中。查看 this 示例。