我从JPA2开始,到目前为止感觉很舒服.但是,当为具有默认值的非null数据库字段持久化具有null属性值的实体时,我遇到了一个问题.
我希望能够将entity属性保留为null,并让数据库插入默认值.
我目前的设置是带有PostgreSQL的openJPA.
我有这个版本的数据库表(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=?, ?, ?, ?, ?]
而博士后的react 是:
FEHLER: NULL-Wert in Spalte »system_time« verletzt Not-Null-Constraint
(德语很抱歉,但此消息表示违反"系统时间"上的Not Null约束).
那我该怎么办?这是JPA还是数据库问题.
我希望能够在我的实体中设置"system_time",或者让它为"null",并让数据库输入默认值.
欢迎任何帮助!
重新获得