@Basic(необязательно = false) против @Column(nullable = false) против @NotNull
Должен ли я использовать один или два или все три вместе, чтобы предотвратить нулевые значения?
@NotNull
@Column(name = "SOME_VALUE", nullable = false)
@Basic(optional = false)
private String someValue;
Обратите внимание, что я не считаю это дубликатом существующего вопроса. Я вижу много вопросов, которые задают о подмножестве этих трех вариантов, но мне еще не удалось найти тот, который спрашивает о том, какой из трех вариантов подходит для использования в современном стеке JPA/Hibernate.
0 ответов
@Ненулевой
- Принадлежит
javax.validation.constraints
пакет. - В рамках создания схемы в столбце БД создается не нулевое ограничение.
Обрабатывается механизмом проверки (VE).
Если свойство не установлено (или не установлено в ноль) при сохранении, VE выдает исключение.
Поскольку валидация свойства обрабатывается VE, это полезно на непостоянных уровнях, таких как уровень пользовательского интерфейса (JSF).
@Basic (необязательно = ложь)
- Принадлежит
javax.persistence
пакет. - В рамках создания схемы в столбце БД создается не нулевое ограничение.
- Обрабатывается постоянным провайдером (PP).
- Если свойство не установлено (или не установлено в ноль) при сохранении, PP не передает оператор в БД; это исключение.
@Column (обнуляемая = ложь)
- Принадлежит
javax.persistence
пакет. - В рамках создания схемы в столбце БД создается не нулевое ограничение.
- Обрабатывается БД.
- Если свойство не установлено (или не установлено), поставщик сохраняемости передает значение в БД, что вызывает ошибку; который в свою очередь передается в программу как
java.sql
исключение, заключенное в исключение PP.