заполнение поля типа ZonedDateTime
В таблице есть constraint not null на это поле + default value = now().
Кажется, если значение поля в Ентити == налл, то должно вычислить дефолтное?
Как мне прийти к такому пути?
можешь воспользоваться @UpdateTimestamp и @CreationTimestamp если эти поля твои нужны для сохранения подобной инфы (я сужу по твоему дефолтному now()). либо можешь воспользоваться @Column(… columnDefinition=“DATE not null constraint default now()”)
Дисклеймер: мои ответы должны быть адаптированы по месту применения
javabydeveloper.com/jpa-hibernate-default-column-values/
Да, это конечно замечательно, но почему на стороне БД это не генерируется? Ведь цель - отдать на откуп СУБД, а не генерить дефолт при создании сущности, только при вставке, если она пройдёт успешно.
когда гибернейт генерит квери, он явно перечисляет каждое поле по имени. и так как ты не подставил никакого значения в свои non null поля, то получается, что он явно передает null в поле, на котором висит констрейнт. и бд закономерно ругается, что нельзя вставлять нуллы в такие колонки. обычно при ручном инсерте ты бы просто не перечислял имя этой колонки, и бд бы увидела, что ты ничего не вставляешь сам, и сгенерировало бы дефолтное значение. полагаю именно поэтому гибернейту требуется помочь и дописать эту мета-инфу в энтити
Хм, интересная штука. Спасибо тебе :)
Дэни подскажи тоже пожалуйста)
Обсуждают сегодня