いつもお世話になっております。
SpringBootアプリケーションを実行しますと、
以下エラーが発生します。
原因がわかりませんので、ご存知の方がいらっしゃれば
対応方法を教えて頂けますでしょうか。
【環境】
Spring boot 1.5.9
Spring Tool Suite
【実施した事】
以下のプログラムを作成して、
プロジェクトを選び右クリック→実行→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[] payload() default{};
boolean onlyNumber() default false;
}
【PhoneValidator .javaの内容】
public class PhoneValidator implements ConstraintValidator {
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)
private String memo;
(補足)
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
private String memo;
以上です。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/15 06:48