gpt4 book ai didi

java - @GenerationType.IDENTITY 失败超过 10

转载 作者:行者123 更新时间:2023-11-29 20:57:43 27 4
gpt4 key购买 nike

我正在从事一个项目,我需要存储一些数据(当然还有其他数据)。生产数据库将是MySQL,但对于我的测试,我使用 HyperSQL (又名 HSQLDB)。

我的所有@Enitity类都有相应的@Id字段和@GenerateValue(strategy = GenerationType.IDENTITY)让数据库生成那个领域。一切都工作正常,直到我尝试在 HSQLDB 中加载一些数据并收到错误:

java.sql.SQLIntegrityConstraintViolationException: 
violación del restricción de integridad:
violación de índice o clave única; UK_... table: OPERACION

消息“violación del retricción de integridad: violación de índice o clave única”表示“完整性约束违规:主键或唯一索引违规”(我不知道)不知道这是否是 Locale 设置为英语时的消息,但翻译是这样的)

我将记录器设置为 TRACE 以获取全貌,并意识到在表 OPERACION 中生成的 id 字段最多为 10,并且没有问题,但在第 11 个注册表中,它给我消息 SqlExceptionHelper:139 - 无法执行语句 [n/a],然后引发异常。

有没有办法配置HSQLDB以使用IDENTITY生成更多@Id值?这是 @GenerationType.IDENTITY 策略还是数据库本身的问题?在生产环境中我必须考虑所选策略是否存在任何问题?

预先感谢您的回答。

编辑#1

我一直在研究 HyperSQL 文档,在上一个版本(以及之前的版本)中它支持身份生成。为了以防万一,我切换到了最新版本 2.3.4 (我使用的是 2.3.2),但结果是一样的。

我还尝试使用 @GenerationType.AUTO 策略,但错误仍然存​​在。也许我可以在persistence.xml中使用任何配置来告诉HSQLDB它必须生成多少个身份,但我仍然没有找到任何东西。如果有人知道该属性,请告诉我。

最佳答案

您能否检查一下表中是否已包含主键 = 10 的记录?你能删除表中的所有记录并运行你的程序吗?我认为该表已经包含 PK=10 的记录。

关于java - @GenerationType.IDENTITY 失败超过 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499845/

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