Hibernate和PostgreSQL-序列以-46开头
我在SpringWeb应用程序中使用Hibernate框架和PostgreSQL数据库。例如,我有一个名为agent_id_seq的序列,在Begging中,我通过Hibernate和PostgreSQL-序列以-46开头,postgresql,hibernate,Postgresql,Hibernate,我在SpringWeb应用程序中使用Hibernate框架和PostgreSQL数据库。例如,我有一个名为agent_id_seq的序列,在Begging中,我通过 alter sequence agent_id_seq minvalue 1 start with 1; 我使用Hibernate添加记录,在我使用Hibernate删除记录并使用Hibernate添加另一个记录之前,一切都正常。它使我的序列以-46值开始!如何解决这个问题 我的代理模型 @Entity @Table(name =
alter sequence agent_id_seq
minvalue 1
start with 1;
我使用Hibernate添加记录,在我使用Hibernate删除记录并使用Hibernate添加另一个记录之前,一切都正常。它使我的序列以-46值开始!如何解决这个问题
我的代理模型
@Entity
@Table(name = "agent")
public class Agent {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "agent_seq_gen")
@SequenceGenerator(name = "agent_seq_gen", sequenceName = "agent_id_seq")
@Column(name = "id")
private long id;
如果您从PostgreSQL而不是Hibernate创建序列,那么它的增量是1。但是Hibernate盲目地假设所有序列的增量都是50,除非另有说明 因此,当它得到值1作为结果时,它假设这是生成的键的可用范围内的最后一个值
(2-49)。。2
要修复它,请在映射上指定一个显式增量,或将PostgreSQL序列上的增量改为50
我认为这是一个严重的Hibernate错误,个人。
< P>如果您从PostgreSQL创建一个序列,而不是Hibernate,则使用1的<代码>增量>代码创建。但是Hibernate盲目地假设所有序列的增量都是50,除非另有说明 因此,当它得到值1作为结果时,它假设这是生成的键的可用范围内的最后一个值(2-49)。。2
要修复它,请在映射上指定一个显式增量,或将PostgreSQL序列上的增量改为50
我个人认为这是一个严重的Hibernate错误。