java - Java 条件 Bean 验证

标签 java jpa bean-validation

现在我有一个类BaseSchedule它被4个类(组合)使用。我想在两个使用类中进行验证,而不是在其他类中进行验证。我有点不知道如何做到这一点。

我的BaseSchedule如下所示:

@Embeddable
@DatesStartBeforeEnd(start = "startDateTime", end = "endDateTime")
public class BaseSchedule implements Serializable {

    private Date startDateTime;

    private Date endDateTime;
}

当我将数据保存到数据库时,我想检查以确保 startDateTimeendDateTime 不为空。通常我会为每个字段提供一个@NotNull

public class TimeSlot implements Scheduleable {
  @Embedded
  private BaseSchedule schedule;
}

但是...就我的 TimeSlotTemplate 而言,我不需要验证,因为我知道它将为空。

public class TimeSlotTemplate extends SchedulableClassTemplateEvent {
    @Embedded
    private BaseSchedule schedule;
}

最佳答案

如果您使用 Hibernate Validator 作为 BV 提供程序,一种解决方案可能是使用自定义 default group sequence provider .

要实现此功能,您的 BaseSchedule 对象必须了解它当前具有的“角色”,例如通过将带有诸如 SlotScheduleTemplateSchedule 等值的枚举传递给其构造函数。根据角色,组序列提供程序可以确定要验证的序列,并返回不包含 @NotNull 约束的序列(如果角色是 TemplateSchedule)。

并不是说此方法要求您在 JPA 生命周期验证期间使用默认序列。

关于java - Java 条件 Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434919/

相关文章:

java - Hibernate二级缓存清除

应用@valid之前的spring mvc进程对象

java - 为什么我的字符串违反约束?

java - android 中是否有套接字接收处理程序?

java - 如何在Java中更改文件夹的名称

string - 返回 List<String> 的命名查询

java - Spring数据jpa deleteBy查询不起作用

java - 为什么我们需要这种特殊类型的构造函数?

java - 错误 : Could not find or load main class bankAccount. 银行帐户

java - Spring——只允许覆盖那个特定的bean