java - 自定义注释以验证唯一元素
问题描述
我需要为 UniqueElements 编写自定义注释。我知道 Hibernate 提供了其中之一,但我只需要通过一个参数进行验证(因此不能使用 hashCode)。
我有这样的事情:
@CustomAnnotatinon
List<MyParameter> parameters;
假设 MyParameter 具有 id、值和类型,但我必须仅通过 id 验证唯一元素。有人能帮帮我吗?
解决方案
我在与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
在我上面添加的链接中添加一条消息。
要查找重复项,您可以这样做,即
推荐阅读
- animation - SVG 动画中的缩放,仅 CSS3
- javascript - index.html 无法访问 node_modules 中的 Js 文件
- python - Tesserocr 崩溃 python
- java - 没有这样的文件或目录 - 如何解决?
- css - 以角度样式化第 n 个子 wrt 主机上下文
- ios - iOS/Swift:通过 UIActivityViewController 共享 PDF 文件/数据有什么区别
- javascript - 反应路由器 this.props.history.push 改变了 url 但不是组件?
- javascript - 如何断言两个数组不相交?
- indexing - 与表大小相比,聚集索引的大小是多少
- gnu-make - 如何使用配置的“前缀”选项构建到指定目录?