@Basic(необязательно = false) против @Column(nullable = false) против @NotNull

Должен ли я использовать один или два или все три вместе, чтобы предотвратить нулевые значения?

@NotNull
@Column(name = "SOME_VALUE", nullable = false)
@Basic(optional = false)
private String someValue;

Обратите внимание, что я не считаю это дубликатом существующего вопроса. Я вижу много вопросов, которые задают о подмножестве этих трех вариантов, но мне еще не удалось найти тот, который спрашивает о том, какой из трех вариантов подходит для использования в современном стеке JPA/Hibernate.

0 ответов

@Ненулевой

  1. Принадлежит javax.validation.constraints пакет.
  2. В рамках создания схемы в столбце БД создается не нулевое ограничение.
  3. Обрабатывается механизмом проверки (VE).

  4. Если свойство не установлено (или не установлено в ноль) при сохранении, VE выдает исключение.

  5. Поскольку валидация свойства обрабатывается VE, это полезно на непостоянных уровнях, таких как уровень пользовательского интерфейса (JSF).

@Basic (необязательно = ложь)

  1. Принадлежит javax.persistence пакет.
  2. В рамках создания схемы в столбце БД создается не нулевое ограничение.
  3. Обрабатывается постоянным провайдером (PP).
  4. Если свойство не установлено (или не установлено в ноль) при сохранении, PP не передает оператор в БД; это исключение.

@Column (обнуляемая = ложь)

  1. Принадлежит javax.persistence пакет.
  2. В рамках создания схемы в столбце БД создается не нулевое ограничение.
  3. Обрабатывается БД.
  4. Если свойство не установлено (или не установлено), поставщик сохраняемости передает значение в БД, что вызывает ошибку; который в свою очередь передается в программу как java.sql исключение, заключенное в исключение PP.
Другие вопросы по тегам