我们遇到了遗留代码的问题。有一个“用户名”字段验证组,验证它的长度,并确保它至少包含一个字母:仅在保存(插入)时进行休眠验证
@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也正在验证所有属性。
如何防止在更新期间对现有实体执行这些验证?
我不希望此修复程序影响同一个实体上的其他属性验证,我无法更改休眠配置。