im, начиная с JPA2 и до сих пор чувствуя себя довольно комфортно. Но у меня проблема при сохранении сущностей с нулевыми значениями свойств для полей базы данных NON NULL со значением по умолчанию.
Я хотел бы оставить свойство entity null и позволить базе данных вставить значение по умолчанию.
Моя текущая настройка - openJPA с PostgreSQL.
У меня есть эта таблица базы данных VERSION (Vorgabewert = Значение по умолчанию):
Spalte | Typ | Attribute
----------------+-----------------------------+----------------------------
status_ | smallint | not null Vorgabewert 0
time_ | timestamp without time zone | not null
system_time | timestamp without time zone | not null Vorgabewert now()
version | character varying(20) | not null
activationtime | timestamp without time zone |
importtime | timestamp without time zone |
У меня есть сущность (Java DTO), которая отображает поля базы данных (кроме "status" ) с помощью конфигурации xml.
Я надеялся, что смогу вставить объект без набора system_time
и ожидать, что база данных заполнит текущее время как значение по умолчанию.
JPA создает следующий SQL-запрос:
INSERT INTO public.version (version, activationtime, importtime, system_time, time_) VALUES (?, ?, ?, ?, ?) [params=?, ?, ?, ?, ?]
и Postgres реагирует с:
FEHLER: NULL-Wert in Spalte »system_time« verletzt Not-Null-Constraint
(извините за немецкий язык, но это сообщение означает нарушение Not-Null-Constraint в 'system_time').
Так что я могу сделать? Является ли это проблемой JPA или базы данных. Могу ли я настроить JPA для исключения свойств null из инструкции SQL INSERT.
Я хочу иметь возможность установить "system_time" в моем объекте или позволить ему быть "null" и дать базе данных значение по умолчанию.
Любая помощь приветствуется!
Regads Клаус