Hibernate @ElementCollection size / null验证总是失败

时间:2017-08-02 09:22:54

标签: java spring hibernate

我正在尝试为我最新的春季启动项目设置一个元素集合,但我遇到了验证问题。

我想确保集合中至少有一个值。

我试过了:

@Size(min = 1)
@NotEmpty
@NotNull

但每次验证失败。即使我尝试保存包含一个或多个项目的集合。

以下是我实体中属性的当前代码。

@ElementCollection(targetClass=Integer.class, fetch = FetchType.EAGER)
@CollectionTable(name="campaign_publisher", joinColumns=@JoinColumn(name="campaign_id"))
@Column(name="publisher_id", nullable = false)
private Set<Integer> publishers = new HashSet<>();

奇怪的是,我已经为此验证创建了单元测试,它们工作正常。这是通过从验证器工厂获取验证器来完成的。例如:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory()
validator                = factory.getValidator()

...

Set<ConstraintViolation<Campaign>> constraintViolations = validator.validate(campaign)

但是当我将实体发送到CrudRepository以便在验证失败时保存它们。

此外,如果我删除此属性上的验证并运行集成测试,则数据会正确保存。

如果您需要更多信息,请告诉我,我会提供。

感谢您的帮助!

0 个答案:

没有答案