验证休眠日期只要

Validate hibernate date as long

我想验证 Long 类型中的日期是否大于当前时间。
我见过 @Past@Future 等等......但它不适用于 Long 数据类型。

我正在寻找这样的东西:

@FutureOrPresent
private Long dateStart;
@Future
private Long dateEnd;

但为 Long 值工作。

如何验证 date > System.currentTimeMillis()

提前致谢。

如果您想使用现有的约束注释,但不支持您要应用它们的类型(在您的情况下为 Long),您需要:

创建您自己的 ConstraintValidator 实现,例如:

public class FutureLongValidator implements ConstraintValidator<Future, Long> { 
    public boolean isValid(Long value, ConstraintValidatorContext context) {
        if ( value == null ) {
            return true;
        }
        return value > System.currentTimeMillis();
    }
}

然后注册它,以便 HV 知道它并可以使用它进行验证。有几种方法可以做到这一点。我建议使用 ServiceLoader 方法。为此,必须创建文件 META-INF/services/javax.validation.ConstraintValidator 并向其中添加验证器的完全限定名称:

some.package.FutureLongValidator
some.package.FutureOrPresentLongValidator

有关更详细的说明和示例项目,请查看此 post,其中详细介绍了该主题 - Adding custom constraint definitions via the Java service loader