Java

【Java】Hibernate Validatorの環境構築

あけまして、おめでとうございます。ともです。

Springを利用してアプリを作成していまして、ValidationにHibernate Validatorを利用することにしました。

環境構築で詰まったので備忘を残します。

Validationが効かない

@Data
public class LoginForm implements Serializable {

	private static final long serialVersionUID = 1L;

	@NotBlank
	@Size(min=1, max=5)
	private String userName;
	@NotBlank
	@Email
	private String email;
	@NotBlank
	private String password;
	@NotBlank
	private String rePassword;

上記のようにJavaBeanにjavax.validation.constraints.*のアノテーションを設定しているにも関わらず、BindingResultがエラーにならない。

結論

公式サイトに書いてました。

一応表としても残しておきます。

Hibernate Validator 7.0 6.2 6.1 6.0 5.4
Java 8 or 11 8 or 11 8 or 11 8 or 11 6, 7 or 8
Bean Validation N/A N/A N/A 2.0 1.1
Jakarta Bean Validation 3.0 2.0 2.0 N/A N/A

私は、

  • Java11
  • Bean Validation 2.0
  • Hibernate Validator7.0

を利用していましたが、組み合わせが悪かったです。

  • Java11
  • Bean Validation 2.0
  • Hibernate Validator 6.0

とすることで解決しました。

jakarta.validationを利用する場合は、Hibernate Validatorは6.1以上

javax.validationを利用する場合は、Hibernate Validatorは5.4・6.0

を利用することが分かります。