стоимость.
инаю с JPA2 и чувствую себя довольно комфортно. Но у меня проблема при сохранении сущностей со значениями свойства NULL для полей базы данных NON 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), который отображает поля базы данных (кроме «статуса») с помощью конфигурации 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 для исключения нулевых свойств из оператора SQL INSERT.
Я хочу иметь возможность установить 'system_time' в моей сущности или позволить ему быть 'null' и позволить базе данных установить значение по умолчанию.
Любая помощь приветствуется!
Регадс Клаус