我正在尝试为我最新的春季启动项目设置一个元素集合,但我遇到了验证问题。
我想确保集合中至少有一个值。
我试过了:
@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以便在验证失败时保存它们。
此外,如果我删除此属性上的验证并运行集成测试,则数据会正确保存。
如果您需要更多信息,请告诉我,我会提供。
感谢您的帮助!