当我尝试创建实体
时getEntityManager().persist(entity);
我在下面有例外
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pkproperty"
Detail: Key (id)=(191375) already exists.
我无法理解这个ID值是什么。在我执行实体创建之前,我的数据库中只有一个序列,其值为191418。
此实体的ID描述为
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id")
@Basic(optional = false)
@Column(name = "id")
private Long id;
在数据库中,我已经创建了序列seq_id
是否有可以使用的默认序列?如果是,我该如何查看它的值?
答案 0 :(得分:1)
JPA中设置的序列分配必须与数据库中使用的分配大小相匹配,否则在分配期间会出现不匹配。尝试在SequenceGenerator定义中指定allocationSize = 1:
@SequenceGenerator(name =" seq_id",allocationSize = 1)
答案 1 :(得分:0)
你可以在没有序列的情况下做同样的事情,参考下面的代码。你的pk列应该是自动增量,自动增量应该从191418开始。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique=true, nullable=false)
private Long id;