我正在配置已存在的数据库指向实体
@Id
@SequenceGenerator(name = "contacto_generator", sequenceName = "commons.contacto_sequence")
@GeneratedValue(strategy = GenerationType.AUTO, generator = "contacto_generator")
private Long id;
我在旧应用程序中有注释。
当我升级实体时很好,但是当我创建一个新实体时,序列不能正常工作
序列“commons.contacto_sequence”在509中。
我甚至激活了“show_sql”并运行:
select nextval ('commons.contacto_sequence')
如果我直接在数据库中运行它,它就完美了
Caused by: org.postgresql.util.PSQLException: ERROR: llave duplicada viola restricción de unicidad «pk_contacto»
Detail: Ya existe la llave (id)=(459).
我不知道459值在哪里,我的数据库中没有序列具有该值
如果您查看控制台,序列名称将显示罕见字符
我不知道它应该是什么或应该改变什么,因为理论上应该自动做Spring.
如果是因为注释已被弃用且与序列连接不好或可能是。
这个项目有Jpa 2.1,Spring 4.3.x
答案 0 :(得分:0)
尝试使用GenerationType.SEQUENCE策略:
@Id
@SequenceGenerator(name = "contacto_generator", sequenceName = "commons.contacto_sequence")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "contacto_generator")
private Long id;