У меня есть два компонента @Entity. Bean one - это "один ко многим" для второго. Bean1 и Bean2 имеют разные средства проверки аннотаций JSR303.
@Entity
class Bean1 {
@OneToMany
private List<Bean2> var;
//other fields marked with JSR303
}
@Entity
class Bean2 {
//other fields marked with JSR303
}
Моя задача - проверить внутренний Bean2. Во-первых, у меня есть контроллер с @Validated of Bean1.
@Controller
class Controller {
public String methodPOST(@Validated Bean1 bean1, BindingResult errors)
}
Hibernate автоматически проверяет JSR303 перед попыткой сохранения в БД. Итак, у меня даже нет никаких исключений проверки от Bean2, потому что Spring их не обрабатывает, а Hibernate выбрасывает.
Я могу создать что-то вроде DTO-бинов и проверить их, и внутренний Bean2DTO будет проверен, если пометить его как @Valid, и со стороны Hibernate не будет выдано исключение, потому что перед сохранением нет проверки. Также в этом случае я заполню BindingResult в методе контроллера.
Есть ли какое-то решение, чтобы получить javax.validation.ConstraintViolationException, выброшенное из Hibernate org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(..) в мой BindingResult без двух вышеуказанных параметров.
Кроме того, я не могу отключить автоматическую проверку Hibernate перед сохранением из-за повреждения другой логики.
Спасибо.