【发布时间】:2019-05-01 12:04:53
【问题描述】:
我有一个存在的实体(TableEntity.java),表存在于数据库中,数据也存在 这是 TableEntity.java 中列 id 已经被删除的方式
@Id
@SequenceGenerator(name = "table_name_id_seq", sequenceName = "table_name_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "table_name_id_seq")
@Column(name = "id", nullable = false, updateable = false)
private int id;
在数据库中,我查看了表的属性,id列,数据类型为int,设置为Not NULL 前面的代码,用于向 db 插入数据,只是做“repository.save()” 但是现在,我想使用 PreparedStatement 将数据每批插入到 db 这是我创建查询的方式
String query = "INSERT INTO table_name (column1, column2) values (?, ?)";
问题是,当查询执行时,它违反了 id 列的空约束。如何使数据库可以处理我的列 id?因为,当我只使用 repository.save() 时工作正常,但是当我使用它(我可以说它是本机查询吗?)查询时,会出现该异常。如何解决这个问题?或任何参考来解决这个问题?
【问题讨论】:
-
您在寻找
id integer default nextval('table_name_id_seq')吗? -
@a_horse_with_no_name 简而言之,我想让 db 自己处理为 id 列创建 id 值,但仍然使用序列。所以,我不必在上面的字符串查询中提及“id”列
标签: java postgresql spring-boot nativequery