我需要为UniqueElements编写自定义注释。我知道Hibernate提供了其中一种,但是我只需要通过一个参数进行验证(因此不能使用hashCode)。
我有这样的东西:
@CustomAnnotatinon
List<MyParameter> parameters;
让我们说MyParameter具有ID,值和类型,但是我必须仅通过ID来验证唯一元素。有人可以帮我吗?
答案 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一样