当前位置: 首页 > 知识库问答 >
问题:

违反自定义约束时没有错误消息

燕玉堂
2023-03-14

我有以下用于自定义约束的代码:

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD })
@Constraint(validatedBy = MinMaxValidator.class)
public @interface CheckMinMax{

    String message() default "MinMax constraint has been violated";

    Class<? extends Payload>[] payload() default {};

    Class<?>[] groups() default {};

    int min() default 1;

    int max() default 10;
}
int max;
int min;

@Override
public void initialize(CheckMinMax annotation) {
    max = annotation.max();
    min = annotation.min();

}

@Override
public boolean isValid(Integer value, ConstraintValidatorContext arg1) {
    if (value < min || value > max)
        return false;
    return true;
}
validator.validate(obj);

共有1个答案

翟青青
2023-03-14

validator.validate()方法没有引发ConstraintValidationException。它返回set ,如果存在任何违反约束的情况,您将负责抛出异常。

典型的使用模式是:

Set<ConstraintViolation> cvs = validator.validate(obj);
if(cvs.size() > 0){
  throw new ConstraintViolationException(cvs);
}
 类似资料:
  • 我正在编写一个PL/SQL过程。我对一列有一个约束,它不允许值低于0而高于500。如果违反了这个约束(例如,“ID超出范围”),我需要显示一条自定义消息。目前,这是一个异常,也是GET中的输出。还有另一个过程输出错误,因此使用RAISE_APPLCATION_ERROR。 谢谢。

  • 但是我不想显示这样的消息:“插入记录失败。需要名称”。 有什么方法可以在PostgreSQL中显示自定义错误消息吗?

  • 我有一个迁移脚本之间的2个不同的模式数据库。脚本做了3件事:1。禁用约束2。将记录从旧架构插入到新架构3。启用约束 我发现这两个约束在旧的模式中是不存在的。这2个表的表结构定义有什么问题吗?

  • 这是我的代码,但当我尝试插入另一个“analise”时,num\u cedula,num\u doente,data\u analise为NULL,它会给我这个错误(“错误:num\u cedula”列中的NULL值违反了非NULL约束细节:失败的行包含(32,Ortopedia,NULL,NULL,NULL,NULL,2019-12-02,glicemia,176,Instituicao1)。S

  • 我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,

  • 我有一个MathematicsAnswer引用的实体数学。如果对数学执行post请求,我会得到一个例外,即MathsAnswer上的字段不能为空。但我确实在球场上跳了起来。拜托,我需要这个解决方案<代码>java.sql。SQLIntegrityConstraintViolationException:列'question_id'不能为空。 sql架构: 实体类: MathsAnswers.jav