我有以下用于自定义约束的代码:
@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);
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