Параметр JPA nullable = false не распространяется на сценарий генерации схемы SQL - PullRequest
0 голосов
/ 10 марта 2020

Я указываю атрибут сущности JPA с nullable = false:

@Entity
class EntityName {
  // ...

  @Column(nullable = false, columnDefinition = "VARCHAR(127)")
  protected String uName;

  // ...
}

Однако NOT NULL не появляется в скрипте генерации схемы:

CREATE TABLE EntityName (..., UNAME VARCHAR(127), ...)

(я создаю сценарий генерации схемы в Eclipse 2019-12 из контекстного меню проекта с помощью JPA Tools > Создание таблиц из сущностей ... > Sql -скрипт вариант.)

Почему это происходит? Я ожидаю, что столбец UNAME равен NOT NULL в выражении SQL ...

1 Ответ

1 голос
/ 10 марта 2020

Проблема в опции columnDefinition вашей аннотации @Column:

columnDefinition = "VARCHAR(127)"

columnDefinition по существу переопределяет все, что могло быть сгенерировано. Итак, NOT NULL из nullable = false только что потеряно. (Похоже, что это не указано стандартом JPA.)

Вы можете преодолеть это, написав:

columnDefinition = "VARCHAR(127) NOT NULL"
...