стоимость.

инаю с 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' и позволить базе данных установить значение по умолчанию.

Любая помощь приветствуется!

Регадс Клаус

Ответы на вопрос(1)

Ваш ответ на вопрос