gpt4 book ai didi

java - EclipseLink 生成 id,同时非 jpa 进程也在添加记录

转载 作者:行者123 更新时间:2023-12-01 10:18:16 25 4
gpt4 key购买 nike

我有一个带有 id 列的 eclipselink 实体:

@Id
@Basic(optional = false)
@NotNull
@Column(name = "ID")
private Long id;

问题是无论我使用什么生成策略,我都会收到错误,因为我有一个插入记录的ETL工具,并且Eclipse链接生成器似乎无法在之前检查现有ID创建一个新的。

例如,如果 JPA 生成器刚刚为新记录生成了 id 49,那么当我创建另一个记录时,ETL 工具会生成 20 条 ID 为 50-70 的记录eclipse链接记录生成器为ID提供了50,该ID已被使用。

我该如何处理这个问题?

最佳答案

您的 ID 生成策略需要:

  1. 基于数据库中的内容。
  2. 获取新 ID 并自动更新下一个 ID,无需等待提交。
  3. 由 EclipseLink 和您的 ETL 工具使用。

如果满足所有三个条件,那么它应该可以工作,除非数据库本身不是线程安全的。

满足这些条件的最简单方法可能是在数据库的列定义中包含AUTO_INCRMENT。另一种选择是序列生成器,前提是您的数据库支持它,但您必须确保 ETL 工具使用该序列,而不是查找最大当前 id 并添加 1。

我猜想 ETL 工具使用自己的自定义 id 生成(例如 max+1)是您的问题。

关于java - EclipseLink 生成 id,同时非 jpa 进程也在添加记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com