自定义注释以验证唯一元素

时间:2018-09-20 08:01:17

标签: java validation annotations

我需要为UniqueElements编写自定义注释。我知道Hibernate提供了其中一种,但是我只需要通过一个参数进行验证(因此不能使用hashCode)。

我有这样的东西:

@CustomAnnotatinon
List<MyParameter> parameters;

让我们说MyParameter具有ID,值和类型,但是我必须仅通过ID来验证唯一元素。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在类似情况下,我用Hibernate做的事情(不知道这是否是最好的方法)如下:

在您的自定义注释中,添加带有验证类的约束注释:

@Constraint (validatedBy = UniqueIdValidator.class)
public @interface CustomAnnotation

然后,我创建了UniqueIdValidator类(我像以前一样使用array作为字段,而不是List,但我希望它能起作用)

public class UniqueIdValidator implements ConstraintValidator<CustomAnnotation, List<String>>

使用方法:

@Override
public boolean isValid(List<String> values, ConstraintValidatorContext constraintContext)

通过这种方法,您可以检查您的List是否包含重复项并引发异常或使用错误处理功能,例如像在我上面添加的链接中那样向constraintContext添加消息。

要查找重复项,您可以像this一样