Java 使用JPA Hibernate从序列与手动插入设置id

Java 使用JPA Hibernate从序列与手动插入设置id,java,hibernate,jpa,generator,sequence,Java,Hibernate,Jpa,Generator,Sequence,我有一个使用序列生成id的实体 @Id @SequenceGenerator(name = "ENTITY_SEQ", sequenceName = "ENTITY_SEQ", allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ENTITY_SEQ") @Column(name = "ID", unique = true, nullable = false) public Lo

我有一个使用序列生成id的实体

@Id
@SequenceGenerator(name = "ENTITY_SEQ", sequenceName = "ENTITY_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ENTITY_SEQ")
@Column(name = "ID", unique = true, nullable = false)
public Long getId() {
    return id;
}

它工作正常。但当我手动测试和设置id时,顺序重写值并设置它自己的值。是否有可能将设置值的优先级更改为ID?

第一个问题是什么?如果ID不正确,为什么需要手动控制它?JPA序列使它独一无二。从技术上讲,一些JPA提供程序允许创建自定义序列生成器(如Hibernate中的@GenericGenerator)但是你真的需要吗?因为我有时需要手动迁移一些已经存在ID的数据。我希望确保所有数据都正确插入并且保持一致>>我有时需要手动迁移一些已经存在ID的数据。这个要求与自动生成的ID冲突。假设你手动插入1,2,3,4,5,但是你的顺序是从1开始-发生了什么?一旦尝试调用persist(),就会出现唯一的约束冲突。好的,假设你从6开始。但“有时”你再加上100110021003——好吧,当序列达到1001时会发生什么?再次-唯一约束冲突。你们会“有时”重新创建和编译序列吗?