我正在将数据插入Postgres数据库,以下是我的实体:
public class FileData {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false)
private Long id;
}
借助Intelligence J IDEA自动生成的存储库界面:
fileDataRepository.save(fileData);
我可以很好地将数据插入到我的数据库中,直到ID号达到当前值152560,然后每次我尝试插入一行数据时,我都会收到以下错误:
PSQLException: ERROR: duplicate key value violates unique constraint "file_data_pkey"
Detail: Key (id)=(53) already exists.
我确认我构造的fileData的id值为空,每次我调用save(或saveAndFlush)时,重复的键值都会增加,在我看来,JPA似乎以某种方式决定重置这个表上的计数器。
所以我的问题是,JPA生成的数量有限制吗?有没有办法对其进行配置?
1条答案
按热度按时间yjghlzjz1#
唯一的限制是数据库数据类型。
但是,您不应该使用@GeneratedValue(Strategy=GenerationType.AUTO),因为不清楚id将如何生成。Hibernate将尝试自己解决这一问题。
由于您使用的是PostgreSQL,因此应该采用如下顺序:
阅读有关https://vladmihalcea.com/jpa-entity-identifier-sequence/的更多信息