Spring boot 独自Validatorの作成でエラーが発生します。
いつもお世話になっております。
SpringBootアプリケーションを実行しますと、
以下エラーが発せします。
原因がわかりませんので、ご存知の方がいらっしゃれば対応方法を教えてください。
【エラー】
Caused by: javax.validation.ConstraintViolationException: Validation failed for classes [com.sample.MyData] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='電話番号の入力が不正です。', propertyPath=memo, rootBeanClass=class com.sample.MyData, messageTemplate='電話番号の入力が不正です。'}
]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:138) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:78) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.action.internal.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:197) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:75) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
【Phone.javaの内容】
@Documented
@Constraint(validatedBy=PhoneValidator.class)
@Target({ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@ReportAsSingleViolation
public @interface Phone {
String message() default "電話番号の入力が不正です。";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
boolean onlyNumber() default false;
}
【PhoneValidator .javaの内容】
public class PhoneValidator implements ConstraintValidator<Phone, String> {
private boolean onlyNumber = true;
@Override
public void initialize(Phone phone){
this.onlyNumber=phone.onlyNumber();
}
@Override
public boolean isValid(String input,ConstraintValidatorContext cxt){
if(input == null){
return false;
}
if(this.onlyNumber){
return input.matches("[0-9]*");
}
else{
return input.matches("[0-9()-]*");
}
}
}
【MyData.java】の内奥
public class MyData {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column
private Long id;
@Column(length=50,nullable=false)
@NotEmpty
private String name;
@Column(nullable=true)
private Integer age;
@Column(length=200,nullable=true)
private String mail;
@Column(nullable=true)
@Phone(onlyNumber=true) // ←左記の記述を@Phoneにするエラーは発生しません。
private String memo;
以上です。
よろしくお願いいたします。