2016-09-23 124 views
0

有沒有辦法讓彈簧批處理中的ItemPreparedStatementSetter中的PreparedStatement配置成讓db數據庫動態生成ID的方式?PreparedStatement在ItemPreparedStatementSetter中讓數據庫引擎自動生成ID

通常情況下,你會設置它,同時從java.sql.Connection創建聲明:

PreparedStatement ps = con.prepareStatement(sql, new String[]{"ID"}) 

我想避免的例外:

Caused by: java.sql.SQLIntegrityConstraintViolationException: 
ORA-01400: 
cannot insert NULL into ("SCHEMA"."TABLE"."ID") 
+0

你正在使用什麼數據庫?通常,幾乎DB有getNextVal()方法來獲取下一個ID。 –

+0

我正在使用Oracle。你指的是什麼getNextVal()方法?我定義了序列,但這些在使用JPA時使用,但不在ItemPreparedStatementSetter上下文中使用。我也知道我可以使用JPA Item編寫器,但我需要JDBC一個,因爲性能 –

+0

請讓我'sql'值。 –

回答

0

的解決方案是在SQL中使用Oracle序列:

String sql = "INSERT INTO TABLE_NAME (ID) VALUES (SEQ_NAME.nextval)";