hibernate validate 自定义对类的验证,可以同时验证几个字段的关联关系

最近开发接口,要求验证几个有关联的字段,但是在资料中,都是看到类似于@notnull,@notempty的注解,都是对单个字段,并不能满足我们平时开发的需求。

我们遇到的是,当选择某个字段时,另外一个字段不能为空,这样具有逻辑判断的验证,

1、在hibernate validation 中,提供了对类的注解。可以实现此需求

定义注解。

@Retention(RetentionPolicy.RUNTIME)
//element.type 注解用于类
@Target(ElementType.TYPE)
@Documented
@Constraint(validatedBy=BaseValAnno.class)
//@Repeatable(LinkVals.class)(可重复注解同一字段,或者类,java1.8后支持)
public @interface BaseVal {
String message() default "格式不正确";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
}

2.对注解进行定义,继承 ConstraintValidator,接口,



3.自定义注解的使用。

/*

1、由于是对类的注解,所以存在的逻辑关系是先对属性验证,然后对类的逻辑关系验证,

2、@GroupSequence是对注解分组的排序,可以通脱他判断先后顺序

*/

@GroupSequence({first.class,second.class,third.class,fourth.class,BaseInfo.class})

@BaseVal(groups={fourth.class})
public class BaseInfo  {

//private int id;

@NotEmpty(message="年度不能为空",groups={first.class})
    private String niandu;

@NotEmpty(message="处罚主体不能为空",groups={first.class})
    private String areacode;



  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值