レガシーコードに問題が発生しました。 「ユーザ名」フィールドの検証セットは、その長さを検証し、それが含まれていることを確認すること、あります少なくとも1つの文字:保存(挿入)時のHibernate検証
@Column(name = "username")
@Size(min = 4, max = 40)
@Pattern(regexp = "^.*[a-zA-Z]+.*$")
private String username;
私たちが持っている問題は、いくつかの既存のレガシーデータは、これらの検証に適合し、かつIないということです新しく作成されたユーザーにも適用されながら、これらの検証を従来のデータ(古いユーザー)に対して無視する方法を見つけようとしています。
私は(そう値が実際の変更のみで検証されます)setUsername(...)
メソッドに検証を動かす考えていたが、これは例外原因:私も実体がdynamicUpdate=true
に設定されていることを確認しました
javax.validation.ValidationException: Annotated methods must follow the JavaBeans naming convention. setUsername() does not.
をただし、変更が発生していなくても、Hibernateはすべてのプロパティを検証しているので、これは役に立ちません。
これらの検証が更新中に既存のエンティティで実行されないようにするにはどうすればよいですか?
修正プログラムを同じエンティティの他のプロパティ検証に影響させたくないため、休止状態の構成を変更できません。