小编Tom*_*r A的帖子

仅在保存(插入)时进行休眠验证

我们遇到了遗留代码问题。有一个用于“用户名”字段的验证集,用于验证其长度并确保其至少包含一个字母:

@Column(name = "username")
@Size(min = 4, max = 40)
@Pattern(regexp = "^.*[a-zA-Z]+.*$")
private String username;
Run Code Online (Sandbox Code Playgroud)

我们面临的问题是,一些现有的旧数据不适合这些验证,我正在尝试找到一种方法,使旧数据(旧用户)可以忽略这些验证,同时仍将这些验证应用于新创建的用户。

我正在考虑将验证移至setUsername(...)方法(因此将仅在实际更改时验证值),但这导致了异常:

javax.validation.ValidationException: Annotated methods must follow the JavaBeans naming convention. setUsername() does not.
Run Code Online (Sandbox Code Playgroud)

我还确保将实体设置为dynamicUpdate=true,但这无济于事,因为hibernate会验证所有属性,即使没有发生更改也是如此。

如何防止在更新过程中对现有实体执行这些验证?
我不希望该修复程序影响同一实体上的其他属性验证,并且我无法更改休眠配置。

java validation hibernate jsr bean-validation

4
推荐指数
1
解决办法
1395
查看次数

标签 统计

bean-validation ×1

hibernate ×1

java ×1

jsr ×1

validation ×1