java - 如何为集合项添加约束
问题描述
我有一个带有字符串集合的实体。我想添加一个约束来检查集合中所有项目的大小是否小于 255。
假设我有一个Area
包含references
. 我想确保所有引用都短于 255 个字符。你知道我怎样才能实现它。
@Entity
@Table(name = "AREA")
public class Area Serializable {
private static final long serialVersionUID = -4756123949793458708L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
private Integer id;
@ElementCollection
@CollectionTable(name = "AREA_REFERENCES", joinColumns = @JoinColumn(name = "AREA_ID"))
@Column(name = "REFERENCE", nullable = false)
@Size(max = 255) // THIS ANNOTATION SEEMS TO NOT WORK
private Set<String> references = new HashSet<>();
....
解决方案
像这样注释
@Size(max = 255)
private Set<String> references;
表示Set<String>
最多允许包含 255 个字符串。当然这不是你想要的。
相反,您希望每个字符串最多包含 255 个字符:您可以通过在其中注释类型参数来实现它,< >
如下所示:
private Set<@Size(max = 255) String> references;
为此,您将需要全新版本的 Hibernate Validator (6.0.x) 和 Bean Validation (2.0.1)。
另请参阅此答案以了解类似问题。
推荐阅读
- php - Access-Control-Allow-Origin SESSION 仅在 localhost 中无任何作用
- python - Python setuptools:首先从源代码构建然后安装
- javascript - 克隆多个图像javascript
- elasticsearch - 在关键字字段中拆分时出现运行时错误
- google-cloud-storage - 无需离开云端即可使用 Google Cloud Tar
- android - Android Studio 无法查看我的设备
- python - 数单词末尾的元音
- java - TOTP Base32 与 Base64
- python - 根据两个现有列的对应值创建一个新列
- javascript - 如何在javascript中创建购物车计数器