Почему не генерируется / вставляется значение по умолчанию? - PullRequest
0 голосов
/ 21 сентября 2018

Я только что изменил таблицу place и ее столбец claimed следующим образом:

ALTER TABLE place
    ADD COLUMN IF NOT EXISTS claimed boolean NOT NULL DEFAULT false;

В phpPgAdmin я вижу, что это работает.Также все начальные значения правильно установлены на false.

Howerver, так как я создаю новую запись:

this.placeRepository.save(place);

Я получаю:

ERROR: null value in column "claimed" violates not-null constraint

илив целом:

2018-09-21 21:56:47.902  WARN 30087 --- [nio-8443-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23502
2018-09-21 21:56:47.903 ERROR 30087 --- [nio-8443-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: null value in column "claimed" violates not-null constraint
  Detail: Failing row contains (17, 2018-09-21 19:56:47.885, 2018-09-21 19:56:47.885, ChIJj15CRtukokcRcvSmyJCKGU4, 49.7759560000000008, 9.57715980000000044, Wertheim Village, Almosenberg, Wertheim, null).
2018-09-21 21:56:47.908  INFO 30087 --- [nio-8443-exec-9] m.a.s.e.CustomRestExceptionHandler       : org.springframework.dao.DataIntegrityViolationException
2018-09-21 21:56:47.908  INFO 30087 --- [nio-8443-exec-9] m.a.s.e.CustomRestExceptionHandler       : org.hibernate.exception.ConstraintViolationException

Я не вижу, в чем здесь проблема.Так почему же значение по умолчанию здесь не генерируется?Мне кажется, что Hibernate просто пытается вставить значение null?

Я думаю, что это не имеет значения, но просто чтобы быть уверенным, что я также добавил nullable = false в своем коде Java в столбец класса сущности:

@Column(nullable = false)
private Boolean claimed;

1 Ответ

0 голосов
/ 22 сентября 2018

Решение:

  1. Просто установите значение по умолчанию для поля

    @Column(nullable = false) private Boolean claimed = true;


Установка значения по умолчанию в случае, если значение не установлено

@PrePersist public void prePersist() { if(claimed == null) claimed = true; }


Использовать columnDefinition

@Column(columnDefinition="tinyint(1) default 1") private Boolean claimed;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...