I just recently updated my Java environment from 1.7 to 1.8. When I did this, all of my current systems started failing due to the same SQL issue. The insert statement is now including the column "id" which is of type serial and is the only column in the primary key. Before, JOOQ did not include the "id" column on inserts, which caused Postgresql 9.4 to automatically get the next sequence value. Is there any way to fix this so it stop sending over the id column in the inserts with a null value? Below is an example of the code used to do the insert, along with the SQL and error that is generated.
SQL [insert into "public"."sessions" ("cookie_id", "created_on", "generate_cookie", "id", "member_id", "remote_address", "second_authentication_verified_on", "system_approved_on", "token", "updated_on") values (?, cast(? as timestamp), ?, ?, ?, ?, cast(? as timestamp), cast(? as timestamp), ?, cast(? as timestamp)) returning "public"."sessions"."id"]; ERROR: null value in column "id" violates not-null constraint
Detail: Failing row contains (null, 2016-05-28 21:27:48.379, false, null, null, null, null, null, null, null, 2016-05-28 21:27:48.379).
at org.jooq.impl.Tools.translate(Tools.java:1908)
at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:659)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:362)
at org.jooq.impl.TableRecordImpl.storeInsert0(TableRecordImpl.java:184)
at org.jooq.impl.TableRecordImpl$1.operate(TableRecordImpl.java:155)
at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:128)
at org.jooq.impl.TableRecordImpl.storeInsert(TableRecordImpl.java:151)
at org.jooq.impl.UpdatableRecordImpl.store0(UpdatableRecordImpl.java:195)
at org.jooq.impl.UpdatableRecordImpl.access$000(UpdatableRecordImpl.java:85)
at org.jooq.impl.UpdatableRecordImpl$1.operate(UpdatableRecordImpl.java:135)
at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:128)
at org.jooq.impl.UpdatableRecordImpl.store(UpdatableRecordImpl.java:131)
at org.jooq.impl.UpdatableRecordImpl.store(UpdatableRecordImpl.java:123)
at com.bitdivvy.signer.server.dao.SessionDAO.insert(SessionDAO.java:226)
at com.bitdivvy.signer.server.rest.SessionsEP.createSession(SessionsEP.java:73)
at com.bitdivvy.signer.server.servlets.BasePage.createSession(BasePage.java:34)
at com.bitdivvy.signer.server.servlets.MainWebPage.getJAXBObject(MainWebPage.java:25)
at com.bitdivvy.signer.server.servlets.ObjectPage.doGet(ObjectPage.java:27)
at javax.servlet.http.HttpServlet.doHead(HttpServlet.java:244)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
Detail: Failing row contains (null, 2016-05-28 21:27:48.379, false, null, null, null, null, null, null, null, 2016-05-28 21:27:48.379).
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:305)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.jooq.tools.jdbc.DefaultPreparedStatement.executeQuery(DefaultPreparedStatement.java:83)
at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:425)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:348)
... 38 more