首页 > 解决方案 > 如何为集合项添加约束

问题描述

我有一个带有字符串集合的实体。我想添加一个约束来检查集合中所有项目的大小是否小于 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<>();

    ....

标签: javahibernatebean-validation

解决方案


像这样注释

@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)。

另请参阅此答案以了解类似问题。


推荐阅读