я начинаю с 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), который отображаетполя базы данных (кроме «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 для исключения нулевых свойств из оператора SQL INSERT.
Я хочу иметь возможность установить 'system_time' в моем объекте или позволить ему иметь значение 'null' и позволить базе данных установить значение по умолчаниюзначение.
Любая помощь приветствуется!
Regads Klaus