【发布时间】:2021-07-13 14:28:48
【问题描述】:
这是在我的实体类中配置 Id 的方式,
@Entity
@Table(name = "test_data")
@NamedQuery(name = "TestData.findAll", query = "SELECT t FROM TestData t")
public class TestData implements Serializable {
@GenericGenerator(name = "testDataSequenceGenerator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "sequence_name", value = "test_data_Seq"),
@Parameter(name = "initial_value", value = "1000"), @Parameter(name = "increment_size", value = "1") })
@Id
@GeneratedValue(generator = "testDataSequenceGenerator")
protected Long id;
}
我将数据持久化到实现 JpaRepository 接口的表中。增量工作正常,直到我开发了一个新的 biz 解决方案,我需要根据 biz 需求插入 ID 值。
示例:我当前在 Postgres DB 中的第一行的 ID = 1000。因此,根据我在实体中完成的生成配置,我的下一个将是 1001。但是随着新的增强。我正在插入 ID = 2000。由于 JPA 不允许用户定义 ID(我相信这是因为 ID 上的配置),因此我使用本机查询通过 EntityManager 执行相同的操作。
现在这样做;一旦我运行根据用户输入插入 ID 的 biz 工作流程。后来,当我尝试创建一个新条目时,hibernate 使用之前创建的 ID 递增,即 1001,而不是 2001。
这是因为休眠中的任何缓存吗?我需要更新休眠中的下一个值吗?你能帮帮我吗?
【问题讨论】:
标签: java spring-boot hibernate spring-data-jpa spring-data