【发布时间】:2017-10-13 07:52:19
【问题描述】:
我们遇到了遗留代码的问题。有一个“用户名”字段的验证集,验证它的长度并确保它至少包含一个字母:
@Column(name = "username")
@Size(min = 4, max = 40)
@Pattern(regexp = "^.*[a-zA-Z]+.*$")
private String username;
我们遇到的问题是一些现有的遗留数据不适合这些验证,我正在尝试找到一种方法使这些验证被遗留数据(旧用户)忽略,同时仍应用于新创建的用户。
我正在考虑将验证移至 setUsername(...) 方法(因此值将仅在实际更改时验证),但这导致了异常:
javax.validation.ValidationException: Annotated methods must follow the JavaBeans naming convention. setUsername() does not.
我还确保实体设置为 dynamicUpdate=true,但这无济于事,因为 hibernate 正在验证所有属性,即使没有发生任何更改。
如何防止在更新期间对现有实体执行这些验证?
我不希望修复影响同一实体上的其他属性验证,并且我无法更改休眠配置。
【问题讨论】:
标签: java hibernate validation bean-validation jsr