gpt4 book ai didi

java - 如何进行条件级联验证(Hibernate)?

转载 作者:行者123 更新时间:2023-11-30 11:36:32 24 4
gpt4 key购买 nike

我有一个类似这样的类:

public Foo {

@Valid
private Bar bar;
private Long barId;
}

所以当我验证类 Foo 时,类 Bar 也被验证。但有时我不希望在验证 Foo 时验证 Bar 类(例如,当无法更正错误值时)。我可以做类似的事情吗:

@Valid(when="barId is null")

?

最佳答案

实际上@Valid 中不支持条件。我认为作为一种解决方法,您可以尝试定义您的 custom constraint @ConditionalBarValid。您可以在类里面应用它:

@ConditionalBarValid
public Foo {

private Bar bar;
private Long barId;
}

因此您的约束 validator 将有权访问整个 Foo 对象,并且它将能够:

  • 检查barId是否为null
  • 获取bar对象的Validator实例并强制验证

您的ConditionalBarValidator.isValid(...) 实现可能如下所示:

// case when foo is not null and foo.getBarId is null
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
boolean validationResult = validator.validate(foo.getBar()).isEmpty();

关于java - 如何进行条件级联验证(Hibernate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14503152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com