Я использую EclipseLink 2.5 с JPA 2.1 в автономном приложении Java.Проверка данных JPA2 подробное ведение журнала
Некоторое поле помечено знаком @Basic (необязательно = false), но даже с нулевым значением я не получил никаких ошибок перед фиксацией. Ограничение установлено в базе данных, поэтому я получил исключение JDBC.
Добавление Hibernate Validator к проекту и настройке режима проверки для обратного вызова не помогло.
Только с @NotNull аннотация на поле У меня есть исключение: javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.
, который не очень специфичен и не сообщает, где проблема.
Я хотел бы знать, есть ли способ сделать это сообщение более надежным: например, имя поля не задано или что-то в этом роде, и заставьте eclipselink проверить optional = false.
EDIT: Я знаю разницу между JPA и проверкой Bean. Я пытаюсь выполнить проверку только с помощью JPA, используя параметр optional = false. Насколько мне известно (@Basic(optional = false) vs @Column(nullable = false) in JPA), @Basic (необязательно = false) следует проверять во время выполнения, а @Column (nullable = false) следует использовать для того, чтобы сделать столбцом неизменяемым в базе данных.
Я ищу способ отображения нарушений с отсутствием уловов ConstraintViolations во всем мире.
Я знаю разницу между JPA и проверкой Bean. Я пытаюсь выполнить проверку только с помощью JPA, используя параметр optional = false. –