我有一個簡單的方法(與jooq)時,基本上是這樣做的:jOOQ試圖爲標識列寫值寫記錄
MyObject myObject = ...;
MyObjectRecord myObjectRecord = MyConvertor.convertor(myObject);
DSLContext create = ...;
create.insertInto(Tables.MY_OBJECT)
.set(MyObjectRecord)
.execute();
在表「MY_OBJECT」,我有一個字段「ID」 ,其定義爲:
id SERIAL NOT NULL;
每當我運行上述代碼中,我得到的錯誤:
Exception in thread "main" org.jooq.exception.DataAccessException: SQL [insert into "public"."myobject" ("somefield", "id") values (?, ?)];
ERROR: null value in column "id" violates not-null constraint
Failing row contains (somevalue, null).
的問題,因爲我本身這就是說,jOOq正試圖爲身份列寫入一個值。 MyConvertor
將它保留爲空的原因是因爲該值將由db生成。如何讓jooq不嘗試寫null
到這個領域?
您使用的是哪種版本的jOOQ?你是否明確地將'myObjectRecord'上的'id'值設置爲'null'?即是myObjectRecord.changed(MY_OBJECT.ID)== true'?這意味着你在插入時打算將'id'的值設爲'null'... – 2014-10-01 22:41:06