首页 > 解决方案 > 自定义注释以验证唯一元素

问题描述

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

我有这样的事情:

@CustomAnnotatinon
List<MyParameter> parameters;

假设 MyParameter 具有 id、值和类型,但我必须仅通过 id 验证唯一元素。有人能帮帮我吗?

标签: javavalidationannotations

解决方案


我在与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在我上面添加的链接中添加一条消息。

要查找重复项,您可以这样做


推荐阅读