首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@GenerationType.IDENTITY失败超过10

@GenerationType.IDENTITY失败超过10
EN

Stack Overflow用户
提问于 2016-05-28 13:53:08
回答 1查看 124关注 0票数 0

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

我的所有@Enitity类都有相应的@Id字段和@GeneratedValue(strategy = GenerationType.IDENTITY),以便让DB生成该字段。在我尝试在HSQLDB中加载一些数据并得到错误之前,一切正常:

代码语言:javascript
复制
java.sql.SQLIntegrityConstraintViolationException: 
    violación del restricción de integridad: 
    violación de índice o clave única; UK_... table: OPERACION

这条信息的意思是“完整性约束违反:主键或唯一索引违反”(当地区设置为英语时,我不知道这是否就是消息,但翻译是这样)。

我将记录器设置为TRACE以获得完整的图片,并意识到在表OPERACION中生成的id字段最多为10个,没有问题,但是在第11个注册表中,它给出了消息SqlExceptionHelper:139 - could not execute statement [n/a],然后引发异常。

是否有任何方法配置HSQLDB以生成更多的@Id值和IDENTITY?这是@GenerationType.IDENTITY策略还是DB本身的问题?在生产环境中,我必须考虑到的选择策略有什么问题吗?

提前谢谢你的回答。

编辑#1

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

另外,我尝试了@GenerationType.AUTO策略,但是错误仍然存在。也许我可以在persistence.xml中使用任何配置来告诉HSQLDB它必须生成多少标识,但我仍然什么也找不到。如果有人知道那个财产,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2016-05-28 14:03:54

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37499845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档