【发布时间】:2016-02-06 01:07:00
【问题描述】:
我正在使用PreparedStatement 将值批量插入到postgres 数据库中,如下所示:
JdbcBatchItemWriter<FieldSet> w = new JdbcBatchItemWriter<>();
w.setDataSource(ds);
w.setSql("INSERT INTO my_table(firstname,lastname) VALUES(?,?)");
w.setItemPreparedStatementSetter(new ItemPreparedStatementSetter() {
//pseudocode
ps.setString(1, "test");
ps.setString(2, "testname");
});
问题:我的实体类还有一个自动生成的@Id,这里没有设置。
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String firstname, lastname;
}
因此,这会导致以下错误:
原因:org.postgresql.util.PSQLException: ERROR: NULL-value in column ?id?违反了 Not-Null-Constraint。
当然,因为我没有设置id。但是如何让它自动生成呢?
【问题讨论】:
-
您的表格是否反映了自动生成的 postgres 标准?见stackoverflow.com/a/13107516/62201 如果没有,为什么不呢?以及您希望如何生成 id?
标签: java spring hibernate postgresql spring-batch