实体字段条件不是强制性的

时间:2017-07-14 09:45:48

标签: java spring hibernate entity

我的表单包含以下数据:namedescriptionmeta_titlemeta_keywordsmeta_description。 在实体类中,我添加了此验证:

@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注释验证字段。

那么,我可以用什么注释来解决我的问题? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以编写自定义验证注释和实现ConstraintValidator的类。通过覆盖其isValid方法,您可以将自定义逻辑添加到自定义注释中。查看this示例。