2016-09-23 40 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)";