@ GenerationType.IDENTITY超过10

时间:2016-05-28 13:53:09

标签: java mysql hsqldb identity

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

我的所有@Enitity类都有相应的@Id字段@GeneratedValue(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óndellimitcióndeintegridad:violacióndeíndiceoclaveúnica”表示“完整性约束违规:主键或唯一索引违规”(我不是知道当Locale设置为英语时是否是该消息,但翻译是那样的)

我将记录器设置为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它必须生成多少个身份但我仍然找不到任何东西。如果有人知道该财产,请告诉我。

1 个答案:

答案 0 :(得分:0)

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